Audionaut MCP Server
The Audionaut MCP server lets AI agents create, inspect, edit, analyze, and export Audionaut multitrack audio projects (.audium).
Create new projects and inspect project summaries or raw persistence JSON.
Import audio files at timeline positions and export mixes or region bounces in WAV, FLAC, AIFF, OGG, or MP3 with format, channel, sample-rate, bit-depth/bitrate, and range options.
Run Essentia analysis for segments, beats, and BPM on a project or standalone audio file.
Auto-edit clips using cached analysis, with measures, segment count, duration, and crossfade controls.
Assemble arrangements from regions sequentially or randomly with reproducible seeds.
Split clips at timeline positions using bars, beats, seconds, or clocks.
Create, rename, retrim, place, move, and remove named regions and clips.
Set clip gain, playback speed (repitch or pitch-preserving stretch), tempo locking, and fade ramps/curves.
Separate a clip into Drums/Bass/Other/Vocals stem tracks using Demucs.
Remove tracks or individual channels.
Send feature requests and bug reports to the maintainer as GitHub issues.
Audionaut
A free, open-source multitrack audio editor that AI agents can drive over MCP.
audionaut.app · Features · Discussions · Sponsor
Audionaut is a free, open-source desktop application for effortless audio editing and recording. Whether you're working on music, podcasts, or multitrack recordings, it gives you precise cutting, per-track playlists, flexible multi-channel support, and clean exports — without the weight and complexity of a full DAW. Audionaut is written in modern C++ on the JUCE framework and runs natively on Windows, macOS, and Linux.
Install
macOS — installer on GitHub Releases or Mac App Store
Windows — installer on GitHub Releases
Linux —
.deb, AppImage and Flatpak bundle on GitHub Releases, or install and update the Flatpak through FlatPark
Use with Claude
Audionaut speaks MCP, so Claude and other agents can edit your sessions. With the app and Node.js 18+ installed:
claude mcp add audionaut -- npx -y audionaut-mcpKeep the project open in Audionaut and each edit arrives as one undo step. On macOS, keep projects in your Music folder. Claude Desktop setup and details: manual, chapter 11.
Checkout
Make sure to clone with submodules:
git clone --recursive https://github.com/kvoltmer/Audionaut.gitor once cloned do:
git submodule update --init --recursiveAudio analysis
The analysis features (segment boundaries, beat tracking with tempo, onset detection) are part of the source tree, in Audionaut/Source/Engine/Analysis, built on JUCE's DSP module. There is nothing to build or install for them.
demucs.cpp (stem separation)
Stem separation runs demucs.cpp, a C++ port of Meta's Demucs, compiled straight from the Submodules/demucs.cpp submodule — no separate build step. It needs the submodule's vendored Eigen (Submodules/demucs.cpp/vendor/eigen, a nested submodule that --recursive fetches); the CMake build detects it and sets AUDIONAUT_ENABLE_DEMUCS accordingly. The model weights are not in the repository: the app downloads them on first use into its Models folder, or point the CLI at a copy with --model.
Build
Xcode — open the Xcode project located here:
Audionaut/Builds/MacOSX/Audionaut.xcodeprojVisual Studio 2026 — open the Visual Studio solution located here:
Audionaut/Builds/VisualStudio2026/Audionaut.slnLinux Makefile — install dependencies:
sudo apt install libasound2-dev libjack-jackd2-dev ladspa-sdk libcurl4-openssl-dev libfreetype-dev libfontconfig1-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev libwebkit2gtk-4.1-dev libglu1-mesa-dev mesa-common-dev libxi-dev libegl-devthen compile:
cd Audionaut/Builds/LinuxMakefile/
make CONFIG=Release -j8Tests
See the Catch2 tests README.
Command-line tool (audionaut-cli)
audionaut-cli gives scripts, CI and AI agents headless access to .audium
projects — no GUI, no audio device. It builds alongside the tests:
cmake -B build -S Audionaut/Catch2Tests
cmake --build build -j8 --target AudionautCli
./build/AudionautCli_artefacts/AudionautCli --helpEvery command takes --json to emit exactly one machine-readable result
envelope on stdout ({"ok": true, "result": ...} or {"ok": false, "error": ...}) with all logging on stderr, plus --quiet. Exit codes: 0 success,
1 operation failed, 2 usage error, 3 feature unavailable in this build
(e.g. separate without Demucs). Option values may be given as --opt value
or --opt=value.
audionaut-cli create song.audium --channels 2
audionaut-cli import song.audium take1.wav take2.wav --position 4.5
audionaut-cli info song.audium --json
audionaut-cli analyze song.audium --types segments,beats
audionaut-cli auto-edit song.audium --track 0 --measures 4
audionaut-cli assemble song.audium --duration 60 --mode random
audionaut-cli split song.audium --at 23 # bar 23; --unit beats|seconds|clocks
audionaut-cli create-region song.audium --name chorus --start 17 --end 25
audionaut-cli set-region song.audium --region chorus --rename drop --length 8
audionaut-cli place-clip song.audium --region drop --at 33
audionaut-cli move-clip song.audium --region drop --to 41
audionaut-cli remove-clip song.audium --at 41 --track 0
audionaut-cli clip-gain song.audium --region drop --gain -6 --db
audionaut-cli clip-fades song.audium --region drop --fade-in 1 --fade-out 2 --unit beats
audionaut-cli separate song.audium --track 1 # Drums/Bass/Other/Vocals tracks; needs the Demucs model
audionaut-cli export song.audium -o mix.wav --sample-rate 48000 --bit-depth 24A typical agent flow: create → import → analyze → auto-edit/assemble
→ export, checking ok in each --json envelope. Projects written by the
CLI open in the GUI app and vice versa.
End-user documentation lives in the User Manual.
CLI invocations report anonymous usage statistics under the same strictly
opt-in consent as the app (one cli_command event: verb and exit code) —
nothing is sent unless consent was granted in the app's settings. Set
AUDIONAUT_DISABLE_ANALYTICS=1 to switch the CLI's reporting off regardless
(CI environments, scripts).
The main Audionaut app also accepts the same verbs (Projucer-style): run the app binary with a verb and it executes headlessly and quits with the command's exit code, even while a GUI instance is open — a file argument or no arguments launches the GUI as usual.
./Audionaut.app/Contents/MacOS/Audionaut export ~/Music/song.audium -o ~/Music/mix.wavNote: the macOS app is sandboxed, so its in-app CLI can only reach
entitlement-covered locations such as ~/Music; the standalone
audionaut-cli build has no such restriction. On Windows, the app is a GUI
program — the shell prompt returns immediately and output interleaves with
it; prefer audionaut-cli for scripting there.
License
Audionaut is dual-licensed under GPL3 (or later) and a commercial license — see LICENSE.md for details.
Contributing
Contributions are welcome — see CONTRIBUTING.md for how to get started and the required Contributor License Agreement (CLA.md).
Support
If Audionaut is useful to you, consider sponsoring its development — sponsorship directly funds development time and keeps the project sustainable.
Available Tools
23 toolsanalyzeAnalyze audioA
Runs audio analysis (segment boundaries, beats with BPM, onsets) on the project's audio files - or one standalone audio file - and caches the results next to the project for auto_edit/assemble to use. Reports progress as each file and type finishes when the call carries a progressToken.
Inputs: target (required), types.
assembleAssemble arrangementA
Builds an arrangement of the given duration from the project's regions, sequentially or at random (requires regions - e.g. from auto_edit).
Inputs: project (required), mode, seed, task, +3 more.
auto_editAuto-edit clipB
Segments a clip on a track using cached analysis results (run analyze first). Splits the clip into musically-aligned regions.
Inputs: project (required), clip, task, track, +4 more.
cleanup_regionsDelete unused regionsA
Deletes every region that has no clip on the timeline (the GUI's Delete Unused Regions). The audio files stay in the package.
Inputs: project (required), task.
clip_fadesSet clip fadesA
Sets the addressed clip's fade ramps and curve exponents (0.1-4, 0.5 = equal power). All four fade values are in unit (default bars) and 0 clears one. Each ramp has two edges measured inward from the clip edge: the fade-in runs from fade_in_start to fade_in after the clip start, the fade-out from fade_out to fade_out_end before the clip end, so a ramp lasts fade_in - fade_in_start (or fade_out - fade_out_end). A negative offset puts that edge outside the clip, playing source audio beyond it - e.g. fade_out 0.25 with fade_out_end -0.25 (seconds) is a 0.5 s ramp centred on the clip end, the outgoing half of a crossfade. Values are clamped against each other within the clip. The address must match exactly one clip.
Inputs: project (required), at, task, unit, +8 more.
clip_gainSet clip gainA
Sets the addressed clip's gain - linear by default, dB with db=true - on every destination channel, or one channel. The address (at or region) must match exactly one clip.
Inputs: gain (required), project (required), at, db, +5 more.
clip_speedSet clip speedA
Sets a clip's playback speed (ratio 0.25-4, 2.0 = double speed, half as long). The mode picks how: repitch (default, varispeed - pitch and length change together) or stretch (pitch-preserving time-stretch). Mode can also be changed on its own. lockTempo ties the clip to the project tempo (speed = project tempo / clip tempo, following tempo changes); the clip tempo is detected by beat tracking or given with tempo, which implies the lock.
Inputs: project (required), at, mode, task, +8 more.
create_projectCreate projectA
Creates a new empty Audionaut project (.audium package) with one track. Fails if the path already exists.
Inputs: project (required), channels.
create_regionCreate regionA
Creates a named region from a timeline range on every track whose clip fully contains it (the GUI's Create Region command). The arrangement itself is unchanged. The name must not be taken by another region (error name_taken).
Inputs: end (required), name (required), start (required), project (required), +2 more.
export_audioExport audioA
Renders the project offline to an audio file (no audio device needed). The output's extension picks the format: .wav (8/16/24/32 bit), .flac (lossless and compressed, 16/24 bit, at most 8 channels per file), .aiff (8/16/24 bit), .ogg (Ogg Vorbis, lossy, at most 8 channels) or .mp3 (lossy, mono or stereo, at most 48 kHz). Lossy formats take bitrate_kbps instead of bit_depth. Pass region to bounce a single region instead - always dry, without any clip's gains or fades. Reports progress in 5% steps when the call carries a progressToken.
Inputs: output (required), project (required), track, region, +7 more.
get_project_infoGet project infoB
Summarizes an Audionaut project: tempo, tracks, clips with positions/durations and their audio files. Set raw=true for the full persistence JSON instead of the summary.
Inputs: project (required), raw.
import_audioImport audioB
Imports one or more audio files into the project at the given position and saves it. Note: importing creates a new track holding the files.
Inputs: files (required), project (required), task, position_seconds.
move_clipMove clipA
Moves one clip to a new timeline position and/or onto another track. Address it by position (at) or region name; the address must match exactly one clip. to_track takes a track id, or "new" to create a track for it; without to the clip keeps its position. Give at least one of to and to_track.
Inputs: project (required), at, to, task, +4 more.
place_clipPlace clipA
Creates a new clip from an existing named region at a timeline position, on the track that owns the region (track only disambiguates same-named regions).
Inputs: at (required), region (required), project (required), task, +2 more.
remove_channelRemove channelA
Removes one channel (0-based) from a track, like deleting a channel strip in the GUI. Channel mappings and per-channel clip gains shift down; the audio files stay in the package.
Inputs: track (required), channel (required), project (required), task.
remove_clipRemove clipsA
Removes the clip at a timeline position (one clip; ambiguity across tracks needs track), or every placement of a named region. delete_region also drops the region itself unless other clips use it.
Inputs: project (required), at, task, unit, +3 more.
remove_trackRemove trackA
Removes a whole track from the project, including its channels, clips and regions. Track ids are positions in the track list, so the ids of the tracks below shift up by one. The audio files stay in the package.
Inputs: track (required), project (required), task.
report_bugReport a bugA
Reports a bug in Audionaut to the maintainer as a GitHub issue. Use it when a tool misbehaves: an error that should not happen, a wrong or inconsistent result, a crash, or a project left in a bad state. Quote the exact tool call and error text - the CLI's code and message - and say what you expected instead; that is what makes the report reproducible. Never include the audio itself, and keep file paths to what is needed. Tell the user you are sending it; include their name or e-mail only if they offered it. If nothing could be sent, the reply carries a prefilled issue link to hand to the user.
Inputs: title (required), description (required), steps, context, +2 more.
request_featureRequest a featureA
Sends a feature request to the Audionaut maintainer as a GitHub issue. Use it when a task needs something the other tools cannot do: a missing verb or option, a limit that got in the way, or a workflow that took a clumsy workaround. Say what the user was trying to achieve and why the current tools fall short - that context is what makes the request actionable. Tell the user you are sending it; include their name or e-mail only if they offered it. If nothing could be sent, the reply carries a prefilled issue link to hand to the user.
Inputs: title (required), description (required), context, reporter.
separate_stemsSeparate stemsA
Splits a clip into Drums/Bass/Other/Vocals tracks with the Demucs (htdemucs) source separator, aligned with the source clip. Slow: minutes for a full song, CPU only; reports progress in 5% steps when the call carries a progressToken. Needs the model weights, which the Audionaut app downloads once (Settings > Separation); fails with model_missing until then, and with demucs_unavailable in builds without Demucs.
Inputs: project (required), clip, task, track, +2 more.
set_regionEdit regionA
Renames a region and/or retrims its source-relative range (clamped to the source audio). Clips have no length of their own, so a retrim affects every clip using the region.
Inputs: region (required), project (required), end, task, +5 more.
splitSplit clipsA
Splits the clip under the given timeline position into two on every track that has one there (the GUI's Split command). Fails with nothing_to_split when no clip spans the position.
Inputs: at (required), project (required), task, unit.
track_panPan a trackA
Sets the pan position of a track's channel strips, -1 (hard left) to 1 (hard right), 0 centred - the pan slider of the channel view. Every strip of the track by default, one with channel. A mono stem has one strip; a stereo import's two strips start at -1 and 1. Playback and export_audio both follow it; get_project_info shows the current pans per track.
Inputs: pan (required), track (required), project (required), task, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 23 tools
Most tools map to distinct resources and actions: project/import/export/analyze versus clip, region, channel, and track editing, plus gain/fades/speed. A few near-neighbors such as remove_clip versus cleanup_regions, create_region versus place_clip, and request_feature versus report_bug require reading the descriptions, but boundaries are generally clear.
All names use snake_case, but the patterns are mixed: many verb_noun names (remove_track, create_region), several noun_property setters (track_pan, clip_gain, clip_speed, clip_fades), and bare verbs (analyze, assemble, split). It remains readable, but there is no single predictable convention.
23 tools is on the heavy side for a typical server, but this is a broad DAW-style domain with analysis, arrangement, clip/region editing, stem separation, export, and maintenance tools. Each tool appears to cover a distinct operation rather than duplicating another.
Core lifecycle coverage exists from create_project through import_audio, analyze, editing, and export_audio, with detailed clip/region operations. However, there is no explicit open/save/close project workflow, no tempo-setting tool, and no track-level volume/mute/solo or clip copy operation, leaving notable gaps for a full audio-project API.
Maintenance
Related MCP Connectors
Remote MCP server for audio stem separation, denoise, reverb, and MIDI export.
MCP server for Producer/Riffusion AI music generation
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Read and edit DAW projects as an agent, save native Logic projects, convert projects between DAWs
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to read and edit Ableton Live sets, including tracks, clips, MIDI notes, devices, and scenes.1-
- FlicenseAqualityDmaintenanceMCP server for controlling REAPER digital audio workstation from natural language. It enables AI agents to create tracks, import audio, adjust mix parameters, and manage sessions through typed operations and a REAPER bridge.22-
- AlicenseBqualityBmaintenanceMCP server for headless, agent-native control of openDAW, enabling programmatic music production with tracks, instruments, effects, MIDI, automation, and rendering via 543 tools.100Apache 2.0
- AlicenseCqualityBmaintenanceEnables podcast producers and agents to manage multitrack projects, run per-track transcription, perform transcript-driven edits, process audio via FFmpeg, and inspect a read-only DAW timeline over MCP.183MIT