DJ-MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DJ-MCPbeatmatch track1.mp3 and track2.mp3 into a 2-deck mix"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DJ-MCP: AI-Controlled Professional Music Production & DJ Workstation
DJ-MCP is an installable, cross-platform Python library and Model Context Protocol (MCP) server engineered for autonomous AI-controlled music production, DJ mixing, audio editing, and mastering.
The AI agent acts as the producer and DJ. The library acts as the deterministic professional audio engine, executing sample-accurate audio manipulation, musical analysis, and DSP without synthetic hallucinations or destructive modifications to source files.
Table of Contents
Related MCP server: Ableton Live MCP Ultra v2
1. Architectural Overview
DJ-MCP decouples high-level creative decision-making from low-level signal processing:
┌─────────────────────────────────────────────────────────────┐
│ LLM / Agent (LM Studio, Claude, Codex) │
└──────────────────────────────┬──────────────────────────────┘
│ MCP Protocol (stdio / sse)
┌──────────────────────────────▼──────────────────────────────┐
│ DJ-MCP Server Layer │
│ - Strict Pydantic Schemas - Structured Error Responses │
│ - Actionable Next Steps - Sequential Workflows │
├─────────────────────────────────────────────────────────────┤
│ Session & Project │
│ - Non-Destructive Timeline - Decks & Crossfader State │
│ - Mixer Channels & Sends - Snapshot / Rollback Journal │
├──────────────────────────────┬──────────────────────────────┤
│ Core Audio & Analysis Engines │
│ ┌──────────────────────────┼──────────────────────────┐ │
│ │ Spotify Pedalboard │ Librosa │ │
│ │ (JUCE C++ Native DSP) │ (BPM, Key, Transients) │ │
│ ├──────────────────────────┼──────────────────────────┤ │
│ │ PyLoudnorm │ Meta AI Demucs │ │
│ │ (ITU-R BS.1770-4 LUFS) │ (Neural Stem Separation) │ │
│ ├──────────────────────────┼──────────────────────────┤ │
│ │ Rubber Band / Soxr │ FFmpeg & Soundfile │ │
│ │ (Time-Stretch & Pitch) │ (Lossless Audio I/O) │ │
│ └──────────────────────────┴──────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘Key Principles
Deterministic Processing: Identical parameters always yield identical PCM sample output.
Non-Destructive by Default: Original source files are never overwritten unless explicitly instructed with a destructive flag. Edits are stored as timeline offset slices.
Sample Accuracy: Beat positioning, cue slicing, and clip alignment preserve exact sample boundaries.
Actionable Errors for Small LLMs: Failed or precondition-blocked operations return structured error envelopes containing the exact next tool and parameters required to fix the issue.
2. System Requirements & Platform Support
DJ-MCP runs natively across:
Linux: x86_64 and ARM64 (Debian/Ubuntu, Fedora, Arch, RHEL)
macOS: Apple Silicon (M1/M2/M3/M4) and Intel x86_64 (macOS 12.0+)
Windows: x64 and ARM64 (Windows 10, Windows 11)
External Tools
FFmpeg / FFprobe: Required for audio transcoding, metadata probing, and container export (MP3, AAC, OGG).
Python: 3.10, 3.11, 3.12, or 3.13.
3. Installation
Clone and install in editable mode (automatically installs all audio engines, PyLoudnorm, Demucs, Pedalboard, Librosa, and PyTorch):
git clone https://github.com/antigravity-audio/dj-mcp.git
cd dj-mcp
pip install -e .Pre-download AI Separation Models
The Meta Demucs neural network will pre-download during installation. To manually verify or pre-cache weights anytime:
dj-mcp download-models4. Diagnostic System Doctor
Run the built-in system doctor to audit hardware capabilities, GPU acceleration, audio libraries, and file permissions:
dj-mcp doctorExample output:
============================================================
DJ-MCP SYSTEM DOCTOR DIAGNOSTIC REPORT
============================================================
Overall Status : HEALTHY
Operating System : Linux (x86_64)
Python Version : 3.13.12
CPU Cores : 12
RAM Total/Avail : 15.28 GB / 11.1 GB
GPU Available : True (cuda)
------------------------------------------------------------
ENGINES & DSP:
[✓ INSTALLED ] ffmpeg : Audio container decoding, encoding, format conversion
[✓ INSTALLED ] soundfile : Sample-accurate uncompressed PCM and lossless I/O
[✓ INSTALLED ] pedalboard : Native C++ JUCE DSP effects (EQ, filters, compressor, limiter, reverb, delay)
[✓ INSTALLED ] librosa : BPM, beat-grid, onset/transient, chroma and key detection
[✓ INSTALLED ] pyloudnorm : ITU-R BS.1770-4 / EBU R128 integrated and momentary LUFS loudness analysis
[✓ INSTALLED ] demucs : High-fidelity neural source separation (vocals, drums, bass, other)
[✓ INSTALLED ] rubberband : High-quality time-stretching and pitch shifting
------------------------------------------------------------
CODECS & FORMATS:
[✓ SUPPORTED ] WAV
[✓ SUPPORTED ] FLAC
[✓ SUPPORTED ] AIFF
[✓ SUPPORTED ] OGG
[✓ SUPPORTED ] MP3
[✓ SUPPORTED ] AAC
------------------------------------------------------------
Disk Free Space : 94441 MB
Cache Directory : /home/igris/dj-mcp/.dj_cache (Writable: True)
Temp Directory : /home/igris/dj-mcp/.dj_temp (Writable: True)
============================================================To obtain output as structured JSON for automation:
dj-mcp doctor --json5. MCP Server Setup & Client Configuration
Start the server using standard I/O transport (default for MCP agents):
dj-mcp.serverOr via the main CLI:
dj-mcp server --transport stdioFor HTTP Server-Sent Events (SSE) remote transport:
dj-mcp server --transport sse --host 0.0.0.0 --port 8080Client Configuration
LM Studio
In Settings -> MCP Servers, add:
{
"mcpServers": {
"dj-mcp": {
"command": "dj-mcp.server",
"args": ["--transport", "stdio"]
}
}
}Claude Desktop
Add to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"dj-mcp": {
"command": "dj-mcp.server",
"args": ["--transport", "stdio"]
}
}
}Gemini CLI / OpenAI Codex
Configure in your respective CLI settings or environment profile:
{
"servers": {
"dj-mcp": {
"command": "dj-mcp.server"
}
}
}Cursor / Windsurf
In Settings -> Features -> MCP, click Add New MCP Server:
Name:
dj-mcpType:
commandCommand:
dj-mcp.server
6. Complete Tutorials
Tutorial 1: Python Library Quickstart
This script imports an audio file, analyzes its musical properties, sets up a timeline track, applies parametric EQ and compression, masters to streaming loudness, and renders to FLAC:
from pathlib import Path
from ai_dj import (
Session,
AudioClip,
Track,
MasteringProcessor,
get_default_config,
)
from ai_dj.export import export_audio_to_file
# 1. Initialize session and project
config = get_default_config()
session = Session(config)
project = session.create_project(project_id="quickstart", name="Quickstart Project", sample_rate=44100)
# 2. Import and analyze audio
track_file = Path("samples/drop.wav")
lib_track = session.library.import_track(track_file, track_id="drop")
analysis = session.library.analyze_track("drop")
print(f"BPM: {analysis['bpm']}, Key: {analysis['key']} ({analysis['camelot']})")
print(f"Loudness: {analysis['loudness']['integrated_lufs']} LUFS")
# 3. Create a timeline track and non-destructive clip
track = Track(track_id="t_lead", name="Lead Track", channel_id="ch_lead")
clip = AudioClip(
clip_id="c_lead_1",
name="Lead Drop",
source_file=track_file,
source_offset_sec=0.0,
timeline_position_sec=0.0,
duration_sec=16.0,
gain_db=-1.5,
fade_in_sec=0.05,
fade_out_sec=0.5,
)
track.add_clip(clip)
project.timeline.add_track(track)
# 4. Render unmastered timeline mix
raw_mix = session.renderer.render_timeline(
project.timeline,
project.mixer,
start_sec=0.0,
end_sec=16.0,
)
# 5. Master to Spotify/Apple Music streaming standards (-14 LUFS, -1.0 dBTP ceiling)
masterer = MasteringProcessor(profile="streaming", target_lufs=-14.0, true_peak_ceiling_db=-1.0)
mastered_audio, stats = masterer.process_audio(raw_mix, sample_rate=44100)
print(f"Mastered Loudness: {stats['final_lufs']} LUFS, Peak: {stats['final_peak_dbfs']} dBFS")
# 6. Export lossless FLAC
out_path = Path("exports/mastered_drop.flac")
export_audio_to_file(mastered_audio, out_path, sample_rate=44100, bit_depth=24, audio_format="flac")
print(f"Exported to: {out_path}")Tutorial 2: Automated 2-Deck Beatmatched Transition
In this tutorial, an AI agent loads two tracks onto Deck A and Deck B, matches their tempos, establishes a 4-beat loop, and performs an equal-power crossfader transition.
from ai_dj import get_active_session
from ai_dj.mcp.tools import (
tool_project_create,
tool_library_import,
tool_track_analyze,
tool_create_beatgrid,
tool_deck_load,
tool_deck_play,
tool_deck_sync,
tool_loop_create,
tool_mixer_crossfade,
tool_render_project,
)
# 1. Create project
tool_project_create(project_id="dj_mix", name="Club Set", sample_rate=44100, num_decks=2)
# 2. Import tracks
tool_library_import(file_path="music/house_a.wav", track_id="track_a")
tool_library_import(file_path="music/house_b.wav", track_id="track_b")
# 3. Analyze BPM and generate beatgrids
res_a = tool_track_analyze(track_id="track_a")["result"]
res_b = tool_track_analyze(track_id="track_b")["result"]
tool_create_beatgrid(track_id="track_a", bpm=res_a["bpm"], first_beat_sec=res_a["first_beat_sec"])
tool_create_beatgrid(track_id="track_b", bpm=res_b["bpm"], first_beat_sec=res_b["first_beat_sec"])
# 4. Load Deck A and Deck B
tool_deck_load(deck_id="deck_a", track_id="track_a")
tool_deck_load(deck_id="deck_b", track_id="track_b")
# 5. Sync Deck B to Deck A's tempo and phase
tool_deck_sync(deck_id="deck_b", master_deck_id="deck_a")
# 6. Establish a 4-beat transition loop on Deck A
tool_loop_create(deck_id="deck_a", length_beats=4.0, start_sec=16.0)
# 7. Start playback and crossfade from Deck A to Deck B
tool_deck_play(deck_id="deck_a")
tool_deck_play(deck_id="deck_b")
# Move crossfader from Left (-1.0) to Center (0.0) to Right (+1.0)
tool_mixer_crossfade(position=0.0, curve="equal_power")
tool_mixer_crossfade(position=1.0, curve="smooth")Tutorial 3: Non-Destructive Timeline Arrangement
Edit and arrange audio without altering the underlying raw files:
from ai_dj.mcp.tools import (
tool_clip_create,
tool_clip_split,
tool_clip_move,
tool_clip_time_stretch,
tool_clip_pitch,
tool_clip_fade,
)
# 1. Place a 30-second source segment onto timeline at 0.0s
tool_clip_create(
track_id="t_vocal",
clip_id="vocal_hook",
source_file="vocals.wav",
timeline_position_sec=0.0,
source_offset_sec=10.0,
duration_sec=8.0,
)
# 2. Split into two 4-second clips
tool_clip_split(
track_id="t_vocal",
clip_id="vocal_hook",
split_offset_sec=4.0,
new_clip_id="vocal_hook_pt2",
)
# 3. Time stretch second half by 1.25x and shift pitch up +2 semitones
tool_clip_time_stretch(track_id="t_vocal", clip_id="vocal_hook_pt2", rate=1.25)
tool_clip_pitch(track_id="t_vocal", clip_id="vocal_hook_pt2", semitones=2.0)
# 4. Apply a 50ms fade-in to eliminate clicks
tool_clip_fade(track_id="t_vocal", clip_id="vocal_hook_pt2", fade_in_sec=0.05, fade_out_sec=0.2)Tutorial 4: Neural Stem Separation & Remixing
Isolate vocals, drums, bass, and instrumental elements using Meta's Demucs backend:
from ai_dj.mcp.tools import (
tool_separate_stems,
tool_job_status,
tool_stem_mute,
tool_stem_solo,
tool_stem_gain,
tool_stem_export,
)
# 1. Launch stem separation as a background job
job_resp = tool_separate_stems(audio_path="song.wav", output_dir="stems/song_stems", model_name="htdemucs")
job_id = job_resp["job_id"]
print(f"Background Job ID: {job_id}")
# 2. Check job progress
status = tool_job_status(job_id=job_id)
print(f"Status: {status['result']['status']}, Progress: {status['result']['progress']}%")
# 3. Once complete, adjust individual stem levels (e.g. acapella extract)
tool_stem_mute(set_id="song_stems", stem_name="drums", mute=True)
tool_stem_mute(set_id="song_stems", stem_name="bass", mute=True)
tool_stem_mute(set_id="song_stems", stem_name="other", mute=True)
tool_stem_solo(set_id="song_stems", stem_name="vocals", solo=True)
tool_stem_gain(set_id="song_stems", stem_name="vocals", gain_db=2.5)
# 4. Recombine and export the isolated vocal track
tool_stem_export(set_id="song_stems", output_path="exports/isolated_vocals.wav")Tutorial 5: Mastering for Streaming & Club Systems
Enforce target loudness and peak ceilings with multi-band mastering:
from ai_dj.mcp.tools import (
tool_master_process,
tool_master_validate,
)
# Option A: Streaming Profile (-14.0 LUFS, -1.0 dBTP ceiling)
stream_res = tool_master_process(
input_file="mixdown.wav",
output_file="masters/streaming_master.wav",
profile="streaming",
)
print("Streaming Master Stats:", stream_res["result"]["stats"])
# Validate against standard
val_stream = tool_master_validate(file_path="masters/streaming_master.wav", target_profile="streaming")
assert val_stream["result"]["is_compliant"] is True
# Option B: High-Energy Club/DJ Master (-9.0 LUFS, -0.3 dBTP ceiling)
club_res = tool_master_process(
input_file="mixdown.wav",
output_file="masters/club_master.wav",
profile="dj_master",
true_peak_ceiling_db=-0.3,
)
print("Club Master Stats:", club_res["result"]["stats"])7. Complete MCP Tool Catalog & Schemas
DJ-MCP exposes high-level, deterministic tools with strict Pydantic parameter schemas.
1. Capabilities & Environment
Tool | Description | Key Arguments |
| Comprehensive OS, CPU, RAM, GPU, audio backends, and codecs report. | None |
| Status of FFmpeg, Soundfile, Pedalboard, Librosa, PyLoudnorm, Demucs. | None |
| Supported container formats (WAV, FLAC, AIFF, OGG, MP3, AAC). | None |
| Active sound card playback and recording devices. | None |
| Installed neural separation weights ( | None |
| List of native DSP filters, dynamics, and spatial effects. | None |
| Get active workspace directory path, free disk space, and defaults. | None |
| Dynamically change active workspace directory for all future exports. |
|
2. Project Lifecycle
Tool | Description | Key Arguments |
| Initialize a new session project. |
|
| Load |
|
| Atomically serialize project state. |
|
| Close active project session. | None |
| Get tracks, timeline duration, and deck states. | None |
| Check for broken file paths, clipping, or missing routing. | None |
| Take an undo/recovery snapshot. |
|
| Restore project to snapshot ID. |
|
| Undo previous action. | None |
| Redo previously undone action. | None |
3. Audio Library & Scanning
Tool | Description | Key Arguments |
| Scan directory for audio files. |
|
| Query library by title, artist, BPM range, key. |
|
| Register file in session library. |
|
| Deregister track from library. |
|
| Inspect ID3/container tags and sample specs. |
|
4. DJ Decks & Synchronization
Tool | Description | Key Arguments |
| Add an extra DJ deck ( |
|
| Load an analyzed track onto a deck. |
|
| Eject track from deck. |
|
| Start deck playback. |
|
| Pause deck playback. |
|
| Stop playback and reset playhead to 0.0s. |
|
| Jump to position in seconds (quantized). |
|
| Lock tempo and beat-phase to master deck with smart half/double-time support. |
|
| Set explicit playback tempo. |
|
| Adjust pitch fader percentage. |
|
| Shift pitch in semitones (Key Lock active). |
|
5. Beat Grid & Musical Analysis
Tool | Description | Key Arguments |
| Auto-detect tempo and beat timestamps. |
|
| Extract onset beat times. |
|
| Identify bar markers (1.1, 2.1, etc.). |
|
| Anchor beatgrid to first downbeat. |
|
| Nudge grid offset (+/-) or adjust BPM. |
|
| Round time to nearest quantum ( |
|
| Detect musical scale and Camelot wheel code. |
|
| Measure integrated LUFS, peak, true-peak, and RMS. |
|
| Check stereo phase correlation [-1.0, 1.0]. |
|
| Count digital overs and clipped samples. |
|
6. Non-Destructive Editing
Tool | Description | Key Arguments |
| Place audio segment on timeline. |
|
| Non-destructively trim clip start/end. |
|
| Split clip into two at offset. |
|
| Delete clip from track. |
|
| Merge two contiguous clips into one. |
|
| Reposition clip on timeline. |
|
| Duplicate clip with timeline offset. |
|
| Apply fade-in / fade-out curves. |
|
| Adjust clip gain in dB. |
|
| Reverse audio playback in clip. |
|
| Pitch shift audio in semitones. |
|
| Time-stretch playback rate (e.g. 1.25x). |
|
| Normalize peak amplitude to target dBFS. |
|
7. Mixer, Routing & Effects
Tool | Description | Key Arguments |
| Add mixer channel strip. |
|
| Set fader volume in dB [-60.0, 24.0]. |
|
| Constant-power pan [-1.0, 1.0]. |
|
| Mute/unmute channel. |
|
| Solo channel strip. |
|
| Crossfader position [-1.0, 1.0] and curve. |
|
| Assign channel to crossfader ( |
|
| Insert DSP effect plugin. |
|
| Modify active effect parameter. |
|
8. Mastering & Rendering
Tool | Description | Key Arguments |
| Apply full mastering chain to file. |
|
| Audit compliance against target standard. |
|
| Render entire timeline mix to audio file (MP3 default, WAV, FLAC). |
|
| Render short preview snippet (15s). |
|
| Transcode file to target codec & bit depth. |
|
| Convert single file or batch directory to MP3, FLAC, WAV, OGG, AAC, OPUS, AIFF with storage savings analysis. |
|
9. Direct Audio & Pitch/Tempo Editing (Audacity-Style Standalone DSP)
Tool | Description | Key Arguments |
| Apply lush reverb with custom room size, damping, and mix to a single song, multiple songs, or an entire folder. |
|
| Apply any Pedalboard effect (reverb, delay, eq, compressor, limiter, chorus, distortion, filter) to single or batch files. |
|
| Change tempo of audio file(s) or track(s) by target BPM, percentage, or duration with pitch preservation. Supports single file, list, or folder. |
|
| Shift pitch of audio file(s) or track(s) by semitones, cents, or target musical key (e.g. |
|
| Varispeed pitch+speed change (analog tape, vinyl 33.3 to 45 RPM). |
|
| Extreme phase-randomized spectral stretch (3x - 50x) for ambient drone design. |
|
| Play audio file backward in time. |
|
| Invert signal phase/polarity (both channels, left, or right). |
|
| Automatically strip or compress silent intervals below threshold dB. |
|
| Adaptive noise reduction and downward noise gating. |
|
| Detect and interpolate clicks, pops, and vinyl crackle. |
|
| Center-channel extraction / cancellation with bass preservation (karaoke / vocal isolation). |
|
| Mix/merge multiple audio files or stems together with anti-clipping normalization. |
|
| Automatically scan a stems directory and recombine all stems into a single song file. |
|
| Set master DAW project/timeline BPM with optional non-destructive clip re-timing. |
|
| Get active project/timeline BPM and time signature. | (none) |
8. Error Handling & Recovery for Small LLMs
Small language models frequently fail when tools return plain text error strings like "invalid argument".
DJ-MCP enforces Structured Error Envelopes:
{
"success": false,
"error": {
"code": "DECK_NOT_FOUND",
"message": "Deck 'deck_c' does not exist in current session.",
"reason": "resource_not_found",
"required_action": "deck_create",
"suggested_tool": "deck_create",
"suggested_arguments": {
"deck_id": "deck_c"
},
"recoverable": true
},
"next_actions": [
{
"action": "deck_create",
"tool": "deck_create",
"arguments": {
"deck_id": "deck_c"
}
}
]
}Self-Correction Loop
When a model encounters a failure:
It reads
error.suggested_toolanderror.suggested_arguments.It executes the suggested tool to satisfy the precondition.
It retries the original operation with guaranteed state validity.
9. Sequential Workflows & Conditional Execution
The workflow engine allows complex multi-step pipelines with automated rollback:
from ai_dj.mcp.tools import (
tool_workflow_create,
tool_workflow_add_step,
tool_workflow_execute,
)
# 1. Create a sequential workflow
tool_workflow_create(workflow_id="prep_track", name="Track Import & Prep Pipeline")
# Step 1: Import Track
tool_workflow_add_step(
workflow_id="prep_track",
tool_name="library_import",
arguments={"file_path": "audio/track.wav", "track_id": "my_song"},
on_failure="stop",
)
# Step 2: Analyze BPM and Key
tool_workflow_add_step(
workflow_id="prep_track",
tool_name="track_analyze",
arguments={"track_id": "my_song"},
on_failure="rollback",
)
# Step 3: Load into Deck A only if analysis succeeds
tool_workflow_add_step(
workflow_id="prep_track",
tool_name="deck_load",
arguments={"deck_id": "deck_a", "track_id": "my_song"},
condition_field="bpm",
condition_operator="is_not_none",
on_failure="stop",
)
# 2. Execute the entire pipeline atomically
result = tool_workflow_execute(workflow_id="prep_track")
print("Workflow Result:", result)10. Performance, Resource Management & Caching
Vectorized C++ DSP: Filter calculations and dynamics run in compiled C++ through Spotify's
pedalboard(JUCE framework) with SIMD optimizations.Analysis Caching: Audio hash + parameter hashes are stored under
.dj_cache/analysis_<hash>.json. Identical audio files are analyzed in< 1ms.Atomic Disk Writes: Every save and render operation uses temporary swap files (
.tmp.<pid>) with POSIXfsyncreplacement, ensuring project files never corrupt during abrupt stops.Auto-Cleanup: Temporary render buffers are automatically tracked and collected at process exit (
atexit).
11. Testing & Verification
The codebase includes integration and unit tests covering DSP accuracy, deck synchronization, beatgrid generation, timeline editing, mastering compliance, and MCP tool invocations.
Execute the test suite:
pytest -v testsOutput:
============================= test session starts ==============================
platform linux -- Python 3.13.12, pytest-9.1.1, pluggy-1.6.0
rootdir: /home/igris/dj-mcp
collected 24 items
tests/test_analysis_and_beatgrid.py::test_key_detection_and_camelot_compatibility PASSED [ 4%]
tests/test_analysis_and_beatgrid.py::test_beatgrid_quantization PASSED [ 8%]
tests/test_analysis_and_beatgrid.py::test_audio_analysis_on_fixture PASSED [ 12%]
tests/test_capabilities.py::test_system_capabilities_structure PASSED [ 16%]
tests/test_capabilities.py::test_doctor_execution PASSED [ 20%]
tests/test_decks_and_dj.py::test_deck_lifecycle PASSED [ 25%]
tests/test_decks_and_dj.py::test_deck_sync_and_pitch PASSED [ 29%]
tests/test_decks_and_dj.py::test_cues_and_loops PASSED [ 33%]
tests/test_decks_and_dj.py::test_crossfader_curves PASSED [ 37%]
tests/test_dsp_and_audio.py::test_stereo_panning PASSED [ 41%]
tests/test_dsp_and_audio.py::test_stereo_width_and_correlation PASSED [ 45%]
tests/test_dsp_and_audio.py::test_dc_offset_removal PASSED [ 50%]
tests/test_dsp_and_audio.py::test_pedalboard_effect_chain PASSED [ 54%]
tests/test_dsp_and_audio.py::test_rubberband_pitch_and_time_stretch PASSED [ 58%]
tests/test_editing_and_timeline.py::test_clip_trim_and_split PASSED [ 62%]
tests/test_editing_and_timeline.py::test_track_and_timeline_rendering PASSED [ 66%]
tests/test_errors_and_recovery.py::test_structured_error_dict PASSED [ 70%]
tests/test_errors_and_recovery.py::test_atomic_write PASSED [ 75%]
tests/test_errors_and_recovery.py::test_undo_redo_stack PASSED [ 79%]
tests/test_jobs_and_workflows.py::test_job_manager_execution PASSED [ 83%]
tests/test_jobs_and_workflows.py::test_sequential_workflow_execution PASSED [ 87%]
tests/test_mastering_and_rendering.py::test_mastering_processor PASSED [ 91%]
tests/test_mastering_and_rendering.py::test_project_rendering_and_export PASSED [ 95%]
tests/test_mcp_tools.py::test_end_to_end_mcp_tool_workflow PASSED [100%]
======================== 24 passed in 7.71s ========================12. License & Attribution
This library is released under the MPL-2.0 License. See LICENSE for full details.
Third-Party Dependencies
Pedalboard: Spotify (GPL v3 / JUCE)
SoundFile: Erik de Castro Lopo / Bastian Bechtold (BSD 3-Clause)
Librosa: Brian McFee et al. (ISC License)
PyLoudnorm: Christian Steinmetz (MIT License)
Demucs: Meta AI (MIT License)
FastMCP: Model Context Protocol Team (MIT License)
This server cannot be deployed
Maintenance
Related MCP Connectors
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Autonomous music production for AI agents with MIDI generation, QC and provenance.
Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to programmatically edit, analyze, and export audio projects through MCP tools, including multi-track editing, effects, transcription, and semantic search.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control Ableton Live with full access to Live's object model, including clip creation, device control, automation, and audio signal capture for mixing and mastering tasks.1MIT
- AlicenseNot gradedqualityBmaintenanceAI-powered music production toolkit enabling AI agents to generate, remix, separate stems, master tracks, and control DAWs via MCP.1MIT
- AlicenseBqualityBmaintenanceMCP server for headless, agent-native control of openDAW, enabling programmatic music production with tracks, instruments, effects, MIDI, automation, and rendering via 543 tools.2100Apache 2.0