audio-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AUDIO_MCP_ROOT | No | Base directory for relative paths. | |
| AUDIO_MCP_FFMPEG | No | Path to the FFmpeg binary. With FFmpeg installed, the server can also read M4A/AAC, WMA, and audio from video files such as MP4, MOV, WebM and MKV. | |
| AUDIO_MCP_MAX_SECONDS | No | Largest section loaded into memory per call. Default is 1800. | 1800 |
| AUDIO_MCP_ALLOWED_DIRS | No | List of directories the server is allowed to read and write, separated by ';' on Windows and ':' elsewhere. By default, the server can read and write any file your user account can. | |
| AUDIO_MCP_WHISPER_MODEL | No | Whisper model used by audio_transcribe. Default is base. | base |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| audio_infoA | Fast metadata without decoding: format, sample rate, channels, duration.
Files read through FFmpeg (M4A/AAC, WMA, MP4/MOV/WebM/MKV video) report decoded_via="ffmpeg", the container
as format and the codec as subtype; without FFmpeg they fail with install instructions.
If |
| audio_analyzeA | Measure an audio file (or the start..end section): peak/true-peak/RMS/LUFS loudness, clipping, DC offset,
a loudness sparkline over time, silence and noise floor, stereo correlation/width/balance, spectral balance
(band energy, brightness, tonal vs noisy, strongest frequencies as notes), pitch, onsets/tempo,
start/end clicks and loop-seam quality. Ends with |
| audio_timelineA | How the sound changes over time: per-segment RMS, peak and brightness, plus a loudness sparkline. Streams the file, so it works on recordings of any length; use it to find where to zoom in. |
| audio_viewA | Render a picture of the sound. kind: 'both' (waveform above spectrogram), 'waveform' or 'spectrogram'. Spectrogram: time left to right, frequency bottom to top, brighter = louder. Horizontal lines are pitched tones/harmonics, vertical stripes are clicks/transients, diffuse haze is noise. Red dashed lines on the waveform mark 0 dBFS (clipping). Zoom with start/end; pitch_overlay draws the detected f0 in cyan. save_to optionally also writes the PNG to disk. |
| audio_melodyA | Transcribe a monophonic line (voice, whistle, solo instrument, synth lead, SFX pitch) into notes with start times, durations, note names and cents deviation, plus a compact text form. Narrow fmin/fmax to the expected range for better accuracy (e.g. bass 40-400, voice 80-1000). |
| audio_eventsA | Split the audio into distinct sound events (hits, notes, words/syllables, SFX layers) and describe each:
start/end, level, attack, tonal vs noisy, brightness, pitch and pitch glide. |
| audio_transcribeA | Speech to text (Whisper, runs locally). Returns the text, timed segments, per-word timings with
confidence, detected language, speaking rate, long pauses and |
| audio_batch_surveyA | Analyze a folder (recursive; filter with a glob |
| audio_batch_processA | Apply one operations chain (same format as audio_process) to every file in a folder or list, writing results with the same relative names into output_dir. Refuses to write into the input folder unless overwrite=true. Example: normalize a set of sound effects to the same loudness: [{"op":"trim_silence"}, {"op":"normalize_lufs","lufs":-18,"limit":true}]. subtype: sample format for every output, e.g. PCM_16, PCM_24, FLOAT, or PCM_U8 for 8-bit WAV (retro or low-memory targets: combine with to_mono and resample). Checked before any file is written. |
| audio_compareA | A/B two files: plain-language summary, metric deltas (loudness, peak, brightness, tempo, pitch), per-band level changes, spectral-shape similarity, issues fixed or introduced, and a null test (aligns and subtracts) that tells whether B is identical, gain-changed, lightly or heavily changed. Use after audio_process to verify an edit did what you intended and nothing else. |
| audio_processA | Apply operations in order and write a NEW file (default: _processed. next to the input; the input is never modified unless output==path and overwrite=true; M4A/video inputs default to WAV output). Each operation is an object, e.g. [{"op":"highpass","hz":80}, {"op":"normalize_lufs","lufs":-16}, {"op":"fade_out","seconds":0.5}]. Ops: gain(db) normalize_peak(db=-1, true_peak=false) normalize_rms(db=-20) normalize_lufs(lufs=-16, ceiling_db=-1, limit=false, measure=integrated|momentary_max) trim_silence(threshold_db=-60, pad_ms=10) denoise(reduction_db=12, sensitivity=1, noise_start, noise_end) [verify speech afterwards with audio_transcribe] limit(ceiling_db=-1, release_ms=60, lookahead_ms=5) compress(threshold_db=-18, ratio=3, attack_ms=10, release_ms=120, knee_db=6, makeup_db=0) fade_in/fade_out(seconds, curve=cosine|linear|equal_power) crop(start, end) pad(start, end) highpass/lowpass(hz, order=4) eq(hz, db, q=1) low_shelf/high_shelf(hz, db) remove_dc to_mono to_stereo resample(rate) reverse polarity(channel=None) loop_crossfade(seconds=0.05) mix(path, at=0, gain_db=0) append(path, gap=0). subtype: e.g. PCM_16, PCM_24, FLOAT, PCM_U8 (8-bit) for WAV. Returns before/after levels and any warnings. |
| audio_synthesizeA | Generate audio from a declarative spec: tones, sweeps, chords, noise bursts, simple melodies and layered sound effects (band-limited oscillators, ADSR envelopes, vibrato, tremolo, filters, panning). Example laser zap: {"layers":[{"wave":"square","freq":1800,"freq_end":200,"duration":0.25, "envelope":{"attack":0.002,"release":0.1},"lowpass":6000}]}. Example melody: {"layers":[{"wave":"triangle","sequence":[["C4",0.25],["E4",0.25],["G4",0.5]]}]}. Full schema: spec = { "sample_rate": 44100, "duration": <seconds, default: end of last layer>, "normalize_peak_db": -1 (null to skip), "layers": [{ "wave": "sine|square|saw|triangle|noise|pink|brown|impulse|dc|silence", # pink/brown are generated circularly, so they loop seamlessly as-is. # impulse: one full-scale sample at the layer start, or a train with "freq" impulses per second. # dc: a constant offset (level set by gain_db; 0 dB = +1.0). silence: exact zeros. "freq": 440 or "A4", "freq_end": , "sweep": "exp|linear", "phase": <start phase, degrees>, "start": 0, "duration": , "gain_db": 0, "pan": -1..1, "envelope": {"attack": 0.005, "decay": 0, "sustain": 1, "release": 0.01}, "vibrato": {"rate_hz": 5, "depth_cents": 20}, "tremolo": {"rate_hz": 6, "depth": 0.5}, "lowpass": , "highpass": , "sequence": [["C4", 0.25], ["rest", 0.25], ["E4", 0.5]] # optional: one note per item, played back to back }] } |
| audio_check_deliveryA | Check a file against a delivery spec and get a verdict (pass / pass with warnings / fail), one entry per
criterion (required, measured, status, note), and |
| audio_check_game_projectA | Audit the audio of a Godot 4 project (the folder with project.godot): inventory of every .wav/.ogg/.mp3 with
a category (ui, sfx, voice, music, ambience, inferred from folder/file names; override with |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools have clearly distinct purposes: metadata, visualization, speech transcription, processing, batch processing, synthesis, comparison, and QA. However, audio_timeline, audio_analyze, and audio_events overlap in time-varying analysis, and audio_batch_survey vs audio_check_game_project both audit folders. Descriptions clarify boundaries well, so only minor ambiguity remains.
All 14 tools follow a consistent snake_case convention with an audio_ prefix and clear noun/verb descriptors. There is no mixing of camelCase, casing, or prefix styles. The pattern is predictable throughout.
14 tools are well-scoped for a broad audio analysis, processing, synthesis, and QA server. The set covers distinct workflows without excessive redundancy. Each tool appears to earn its place.
The surface covers inspection, analysis, processing, batch operations, synthesis, transcription, comparison, and delivery/game-project QA, forming a strong lifecycle. Minor gaps remain, such as exporting to compressed formats (MP3/OGG/FLAC) and editing metadata tags. Core workflows are still well covered.