Gizmos Audacity 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., "@Gizmos Audacity MCP import my voice recording as Voice and measure its peak and RMS levels"
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.
Gizmos Audacity MCP
Local MCP tools for editing, processing and measuring audio in Audacity.
45 typed tools · Audacity 3.7.x · Node 24.21+ · stdio
Import audio, edit tracks and clips, apply effects, write labels, export mixes, and measure peak/RMS or optional LUFS/true peak. Audacity does the processing. Windows supports hidden windows and native dialog recovery. macOS/Linux support the scripting FIFOs; their native window lifecycle is not qualified.
Requirements
English Audacity 3.7.x with
mod-script-pipeenabled: 3.7.8 is the reference build (bundled catalogue, parameter limits, source audit) and 3.7.9 is verified; other patch levels are refused until verified. On Windows, install and pin it:winget install --id Audacity.Audacity -e --version 3.7.8, thenwinget pin add --id Audacity.Audacity -e --version 3.7.8.Audacity 4 is not supported: 4.0 removed the scripting interface (
mod-script-pipe). Support would be reconsidered only if Audacity ships a scripting host with full control.Node.js 24.21 or newer, running as the same user as Audacity.
Optional ffmpeg/ffprobe for LUFS, LRA, true peak, other file formats and metadata. Native PCM/float WAV measurement needs neither.
Related MCP server: Audacity MCP Server
Quick start
The npm package is @gizmos-quest/audacity-mcp. For a source checkout,
run npm ci, then npm run build; use node dist/main.js as the server command.
Install Audacity 3.7.8. Enable
mod-script-pipein Preferences → Modules, choose English in Preferences → Interface, and turn off Preferences → Application → Check for updates (update notices are modal and block scripting until closed). Restart Audacity.Check setup:
npx -y @gizmos-quest/audacity-mcp doctorWith Audacity stopped,
doctor --fixcan enable the scripting module. It saves a config backup first. Setup and configuration.Add the local server to your client using a snippet below, then restart the client if it requires that. Keep one server in control of the shared pipe.
Clients
Claude Code
claude mcp add --scope user --transport stdio audacity -- npx -y @gizmos-quest/audacity-mcpClaude Desktop / Cursor — add this to the client's MCP configuration:
{
"mcpServers": {
"audacity": {
"command": "npx",
"args": ["-y", "@gizmos-quest/audacity-mcp"]
}
}
}VS Code — .vscode/mcp.json:
{
"servers": {
"audacity": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@gizmos-quest/audacity-mcp"]
}
}
}Codex — ~/.codex/config.toml:
[mcp_servers.audacity]
command = "npx"
args = ["-y", "@gizmos-quest/audacity-mcp"]
startup_timeout_sec = 90
tool_timeout_sec = 900Effects can take ten minutes; allow a longer client tool timeout. See client setup for official references and Windows command resolution. Troubleshooting covers missing pipes and localized plugin IDs.
First prompt
Check Audacity's status and launch it if stopped. Import my voice recording as Voice. Measure it, then show a dry-run voice cleanup plan without normalization or noise reduction. Ask before applying it and save a project backup first.
A pipeline preview takes a named or zero-based track reference:
{"track":"Voice","preset":"voice","dryRun":true,"loudness":"none"}Try the reproducible voice-over example: generated audio, reviewed cleanup, a ducked bed, chapters/subtitles and measured delivery. Its opt-in runner drives the built server over stdio against live Audacity.
Tools
Group | Tools |
Session and discovery | launch, fresh, quit, window, dialogs, recover, status, project_info, info, describe |
Edit and mix | select, import, export, project, track_set, track_edit, clip_move, clip_set, edit, fade, envelope_set |
Process | generate, effect, noise_profile, pipeline, auto_duck, command, menu, macros, batch |
Labels | labels_set, labels, labels_file, label_regions_export |
Measure and control | measure, measure_file, compare_files, loudness_target, silence, contrast, probe_file, targets, transport, history, preferences |
Every name starts with audacity_. Tool reference includes
arguments and units; the capability matrix lists limits.
Safety
Save a new
.aup3backup before destructive processing. Scripted effects do not create individual undo entries. Existing project save paths are refused.Strict inputs and a reviewed catalogue block known modal commands. Hidden Audacity still runs its UI and audio engine; it has no native headless mode.
A timeout can leave an edit completed or still running. Inspect dialogs, use explicit recovery, then inspect the project before deciding what to do.
Noise reduction requires fresh process state and an explicit room-tone capture; normalization, limiting and timing changes stay explicit.
mod-script-pipetrusts local processes running as your user. Use one controller. The server never downloads runtimes/models or kills Audacity.
Native safety limits · Effect requirements · Testing · Architecture · Contributing · Security
MIT licensed. Research and source attribution are in NOTICE.md. Audacity is a trademark of Muse Group; this project is unaffiliated.
Available Tools
45 toolsaudacity_auto_duckAuto DuckADestructive
Destructively duck bed samples under speech using native AutoDuck; save a project backup first. The unselected voice must be the immediately following track below the selected bed; import the bed first, then voice. dryRun lists exact parameters/range. Use audacity_envelope_set for editable ducking or an existing track order.
Inputs: bed (required), voice (required), end, start, +8 more. Returns: bed, scope, voice, dryRun, +2 more
audacity_batchBatchADestructive
Clean/master audio files in Audacity using isolated temporary tracks and the reviewed pipeline. Preflights all paths/steps, dryRun lists jobs, and original tracks stay intact. Pause shortening requires an empty project because sync-lock may shift other tracks. Stops at the first failure; completed outputs are retained. Optional before/after reports measure the rendered result. Current solo tracks are refused because they could silence temporary-track exports.
Inputs: jobs (required), dryRun, measure, channels. Returns: jobs, notes, dryRun, results, +2 more
audacity_clip_moveClip MoveADestructive
Move the clip that covers time at on a track so it starts at start seconds.
Inputs: at (required), start (required), track (required).
audacity_clip_setClip SetADestructive
Rename/color a clip or apply a relative gain in dB destructively to its samples. For name/color, at must lie strictly inside exactly one clip, avoiding shared boundaries. Use audacity_track_set gainDb for a reversible track slider, audacity_clip_move for timing.
Inputs: at (required), track (required), name, color, +1 more. Returns: end, name, color, start, +2 more
audacity_commandCommandADestructive
Run a catalogue scripting command or effect on the current selection (Amplify, Compressor, Limiter, LoudnessNormalization, Normalize, High-passFilter, FilterCurve, AutoDuck, FadeIn, …). Parameters follow Audacity's own list; see audacity_describe. Native Set* setters use selected tracks: call audacity_select first. NoiseReduction requires a captured profile.
Inputs: command (required), params.
audacity_compare_filesCompare FilesARead-onlyIdempotent
Compare before/after audio files with the same measurement settings. Returns both reports and numeric changes only for metrics established on both sides; missing LUFS or true peak never becomes a zero change.
Inputs: after (required), before (required), backend, targets, +2 more. Returns: after, delta, before, targetCheck
audacity_contrastContrastB
Measure the RMS level difference between foreground speech and background room tone without opening Audacity Contrast. Each range is exported with current track controls and selection restored. This is a numeric contrast check, not full accessibility certification.
Inputs: background (required), foreground (required), minimumDb. Returns: reason, status, minimumDb, differenceDb, +2 more
audacity_describeDescribeARead-onlyIdempotent
Parameters of one scripting command or effect from the bundled English Audacity 3.7.8 catalogue.
Inputs: command (required). Returns: id, tip, url, name, +1 more
audacity_dialogsDialogsA
On Windows, list Audacity's open windows and dialogs; close=true closes the dialogs (WM_CLOSE, like the window's X; Cancel for questions). Use it when a call times out: a modal dialog blocks the pipe.
Inputs: close. Returns: windows
audacity_editEditADestructive
Split, split-new, trim, duplicate, delete, cut/copy, silence or join/disjoin audio on explicit tracks and time range. split accepts a cursor; delete closes the gap while split_delete retains timing. Paste is not offered: it depends on the system clipboard.
Inputs: track (required), action (required), end, start, +1 more. Returns: end, reply, start, track, +1 more
audacity_effectEffectADestructive
Select a track/range and apply an effect using the bundled English Audacity 3.7.8 catalogue parameters. Default time scope is the track extent, avoiding silent gap clips. NoiseReduction requires a captured profile on this same track and params={}; it uses saved UI settings. Scripted effects add no undo entry: save a project backup first.
Inputs: effect (required), end, start, track, +2 more.
audacity_envelope_setEnvelope SetADestructive
Write a volume envelope on a track: points of time (s) and linear gain (1 = unchanged, 0.5 = -6 dB, 0.25 = -12 dB). Visible as the volume curve in Audacity. replace=true clears the old points first.
Inputs: track (required), points (required), replace. Returns: points
audacity_exportExportADestructive
Export the rendered mix or an explicit time range to WAV/FLAC/MP3/OGG by file extension, honoring gain, pan, mute, solo and envelopes. Selects time and tracks explicitly, including after label editing; channels is 1 or 2.
Inputs: file (required), end, start, channels. Returns: file
audacity_fadeFadeADestructive
Apply sample FadeIn or FadeOut on one track and time range. Omitting time applies to the track extent; use envelope_set for editable automation.
Inputs: track (required), direction (required), end, start. Returns: end, start, track, direction
audacity_freshFreshADestructive
Get an empty project in a single window. A running session is backed up when it has tracks (backupTo required), then restarted, even when empty. Restart is Windows-only; on other platforms save and quit Audacity first. Never use the New menu: a second project window has crashed Audacity 3.7 under scripting.
Inputs: visible, backupTo. Returns: started, visible, processes, backedUpTo
audacity_generateGenerateBDestructive
Generate tone/noise/silence/chirp/rhythm in a new mono/stereo track, or replace a range of an existing track. Uses a time selection for duration and validates kind-specific parameters before adding tracks.
Inputs: kind (required), name, start, swing, +13 more. Returns: end, kind, name, start, +1 more
audacity_historyHistoryADestructive
Undo or redo existing native menu/import history entries. Individual scripted effects and pipelines add no undo entry; save a project backup before destructive processing. Stops before a step the native history does not have, or at Audacity’s own first error, and does not claim checkpoint rollback.
Inputs: action (required), steps. Returns: action, completed
audacity_importImportA
Import an audio (or video, for its sound) file as a new track, name it and place it at start seconds.
Inputs: file (required), name, start. Returns: name, track
audacity_infoInfoBRead-onlyIdempotent
Read native state: Tracks, Clips, Envelopes (points as t/y), Labels, Boxes, Selection, Preferences, Commands (full catalogue with parameters) or Menus.
Inputs: type (required).
audacity_label_regions_exportLabel Regions ExportA
Export every positive-duration region in one label track as numbered audio files, using the current mix and explicit time/track selections. Point labels are skipped. Existing outputs are refused and all destinations are checked before export.
Inputs: directory (required), format, channels, trackName. Returns: count, files
audacity_labelsLabelsADestructive
List/find labels by text, edit one flat zero-based label index, delete one label, or create regular markers. Delete safely reconstructs only its label track at the bottom of the project, preserving every other label including overlaps; returned indices reflect the new order.
Inputs: action (required), end, text, index, +4 more.
audacity_labels_fileLabels FileADestructive
Import Audacity TSV or JSON labels into a named track; export labels as TSV/JSON, SRT/VTT subtitles, timestamp chapters, CUE, Podlove or ffmetadata. Point-label subtitle ends come from the next marker or project end. Existing output files are refused.
Inputs: file (required), action (required), format, trackName. Returns: file, count, format, imported, +1 more
audacity_labels_setLabels SetADestructive
Add point or region labels to a named label track, creating it if needed and retaining existing labels. Use them for chapters, picture events or script lines. Disable the label naming dialog in Preferences > Tracks > Track Behaviors before adding labels.
Inputs: labels (required), trackName. Returns: labels
audacity_launchLaunchA
Start or attach to Audacity with a visible or hidden Windows project window. Waits for a real script-pipe response.
Inputs: visible. Returns: started, visible, processes
audacity_loudness_targetLoudness TargetADestructive
Measure then apply static gain to approach targetLufs while preserving measured true-peak headroom and respecting maxBoostDb. Requires ffmpeg and a non-silent audio track; default scope is its own extent. dryRun returns the measured input and Amplify plan without applying gain. Reports before/after and whether the target was achievable; it never compresses or guesses absent LUFS/true peak.
Inputs: track (required), end, start, dryRun, +4 more. Returns: plan, after, notes, steps, +5 more
audacity_macrosMacrosADestructive
List or apply saved local Audacity macros without opening the Macro Manager. Every step is parsed and checked first; dryRun lists steps. Modal/lifecycle commands and implicit effect presets are refused. Export macros need explicit outputTo.
Inputs: action (required), name, dryRun, outputTo. Returns: name, steps, dryRun, macros, +2 more
audacity_measureMeasureA
Measure tracks, a time range, or currentSelection using a temporary export; restores selection and preserves track controls. Reports peak/RMS/DC/crest, advisory defects and silence. Optional ffmpeg adds integrated LUFS/LRA/true peak. Reads rendered gain/mute/solo/envelopes, so use file measurement for unprocessed source levels. With targets, returns {measurement,targetCheck}; otherwise returns the measurement directly.
Inputs: end, start, track, backend, +5 more. Returns: rms, file, peak, notes, +24 more
audacity_measure_fileMeasure FileARead-onlyIdempotent
Measure an exported/source audio file without touching Audacity. Native PCM/float WAV peak/RMS/DC/crest and advisory defects need no dependencies; ffmpeg on PATH adds EBU R128 LUFS/LRA/true peak and decodes other containers. Unavailable targets report unknown. With targets, returns {measurement,targetCheck}; otherwise returns the measurement directly.
Inputs: file (required), backend, targets, dualMono, +1 more. Returns: rms, file, peak, notes, +24 more
audacity_noise_profileNoise ProfileADestructive
Capture room tone in a fresh Audacity process, then apply NoiseReduction with params={}. Audacity 3.7.8 uses saved UI settings, ignores effect parameters and cannot reset its profile through scripting. Repeating this exact interval reuses its profile; a different interval requires audacity_fresh with backupTo.
Inputs: end (required), start (required), track (required).
audacity_pipelinePipelineBDestructive
Preview or run a reviewed cleanup/mastering chain on one track: voice, podcast, interview, audiobook, vocal, live, music, lo-fi or cleanup. dryRun lists exact ordered commands without changing selection. Noise reduction requires supplied room tone; normalization and limiting are explicit. Default range is the track extent, recalculated after edits.
Inputs: track (required), end, lufs, ratio, +19 more. Returns: notes, steps, dryRun, preset, +1 more
audacity_preferencesPreferencesADestructive
Get a preference or list available preferences. Set is restricted to default project sample rate and recording channel count; never changes modules, UI language, devices or pipe settings. Original value and readback are returned.
Inputs: action (required), name, value.
audacity_probe_fileProbe FileARead-onlyIdempotent
Inspect an audio/video file before importing or exporting: container, duration, audio codecs, sample rate, channels and stream metadata. Requires optional ffprobe (installed with ffmpeg); reads the file without changing Audacity.
Inputs: file (required), timeoutMs. Returns: file, format, streams
audacity_projectProjectADestructive
Open an existing .aup3 into an empty project or save to a new .aup3 path. Existing save destinations are refused to prevent a blocking modal. Use audacity_fresh with backupTo before opening when tracks are present.
Inputs: file (required), action (required).
audacity_project_infoProject InfoA
Read project tracks, clips, selection, length, active project paths and actual render sample rate. Rate is measured by a tiny temporary WAV export with selection restored; an empty project returns rate=null and its default preference separately.
Inputs: no named parameters. Returns: rate, clips, tracks, selection, +4 more
audacity_quitQuitADestructive
On Windows, quit Audacity without a save prompt. Without saveTo the project is discarded (saved to a temporary file that is then deleted).
Inputs: saveTo. Returns: savedTo
audacity_recoverRecoverADestructive
Inspect process, pipe and crash-recovery entries; optionally close blocking dialogs and reconnect after a timeout. Never kills Audacity or replays edits. discardRecovery clears stale config entries only while Audacity is stopped, saving the config first and retaining all project files.
Inputs: visible, reconnect, closeDialogs, discardRecovery. Returns: note, tracks, entries, running, +5 more
audacity_selectSelectAIdempotent
Select a time range on one or more tracks (all tracks when track is omitted; the whole project when start/end are omitted).
Inputs: end, start, track, trackCount.
audacity_silenceSilenceA
Find quiet regions without deleting audio: every channel must stay below thresholdDb for minimumSeconds. Scan an optional file, or rendered tracks/currentSelection with selection restored. Times are absolute project seconds for Audacity ranges and file seconds for files. Returns capped regions plus the total count; current mute/gain/envelopes affect rendered silence.
Inputs: end, file, start, track, +5 more. Returns: file, count, notes, scope, +4 more
audacity_statusStatusBRead-onlyIdempotent
Whether Audacity answers, and its tracks with name, kind, start/end, volume, pan, mute and solo.
Inputs: no named parameters. Returns: tracks, running
audacity_targetsTargetsARead-onlyIdempotent
List numeric house reference targets for podcast, video, broadcast, audiobook and premaster; use these with measurement targets. These references are not publishing certification. Recording noise floor requires isolated room tone.
Inputs: no named parameters. Returns: note, presets
audacity_track_editTrack EditADestructive
Add mono/stereo/label tracks, remove tracks, mix/render, or align selected tracks by start/end/selection. Track scope is explicit; add actions can name the new track. mix_new keeps the original tracks audible: mute them before exporting the new mix to avoid doubling. Find the new audio track in returned tracks; it can precede label tracks.
Inputs: action (required), end, name, start, +2 more. Returns: reply, track, action, tracks
audacity_track_setTrack SetBDestructiveIdempotent
Set track properties: name, gain in dB (the track's volume slider; status reports it back as a linear factor), pan (-1..1), mute, solo.
Inputs: track (required), pan, mute, name, +2 more. Returns: end, pan, kind, mute, +7 more
audacity_transportTransportADestructive
Play a selected region, pause/resume, stop, or record using Audacity’s configured input. Appending requires an explicit audio track matching the configured recording channels (1 or 2). Record mode respects Audacity’s new-track preference, and recording always starts from a cursor point to avoid batch progress waits. status reports selection and a monotonic estimated position; manual transport changes are not tracked. record returns immediately unless duration is supplied.
Inputs: action (required), end, start, track, +2 more. Returns: state, selection, positionSource, positionSeconds
audacity_windowWindowAIdempotent
Show or hide the Audacity window on Windows. A hidden Audacity keeps working through the pipe.
Inputs: show (required). Returns: windows
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 45 tools
Several clusters overlap: audacity_command, audacity_effect, audacity_pipeline, audacity_macros, and audacity_menu all execute processing or menu actions; audacity_measure, audacity_measure_file, audacity_compare_files, audacity_contrast, and audacity_loudness_target all measure audio; and the four label tools overlap. The descriptions are detailed and often say which tool to use when, but with 45 tools an agent can still misselect within these clusters.
All tools use the audacity_ prefix and lowercase snake_case, which is highly predictable. There is minor variation between action-first names (audacity_export, audacity_select) and noun-first names (audacity_track_set, audacity_labels_set, audacity_clip_move), but no chaotic mixed casing or prefixing.
The server exposes 45 tools, far above a well-scoped set, for a domain that is genuinely broad but also heavily fragmented into specialized measurement, label, diagnostic, lifecycle, and batch operations. Many individual tools are useful, but the total surface is heavy enough to make tool selection difficult.
Coverage is broad: project lifecycle, import/export, selection, track and clip editing, generating audio, effects, pipelines, labels, measurement, macros, transport, and batch processing are all represented. Minor gaps and deliberate limitations remain, such as no clipboard paste, restricted preference setting, and no undo entries for scripted effects, but most workflows have practical workarounds.
Maintenance
Related MCP Connectors
Remote MCP server for audio stem separation, denoise, reverb, and MIDI export.
Compose, mix, master and export in Logic Pro, REAPER or Ableton Live by talking to an AI engineer.
Audio for your agent: transcribe, speak, translate, summarise, plus sound effects and music.
Read and edit DAW projects as an agent, save native Logic projects, convert projects between DAWs
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI assistants to control Audacity for real-time local audio editing, mastering, and transcription through over 90 specialized tools. It allows users to perform complex audio processing tasks like noise reduction and podcast cleanup using natural language commands.144136Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables LLM-driven audio pipelines by controlling Audacity through mod-script-pipe, allowing generative audio, effects, and export via MCP tool calls.MIT
- 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-
- AlicenseBqualityCmaintenanceConnects any MCP-compatible AI assistant to Audacity, providing 132 tools for real-time audio editing, cleanup, mastering, and transcription — all running locally without cloud dependencies.100Apache 2.0