Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
AUDIO_MCP_ROOTNoBase directory for relative paths.
AUDIO_MCP_FFMPEGNoPath 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_SECONDSNoLargest section loaded into memory per call. Default is 1800.1800
AUDIO_MCP_ALLOWED_DIRSNoList 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_MODELNoWhisper 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 path is a directory, lists the audio files inside it (recursively).

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 issues: plain-language problems ranked by severity. Set pitch/rhythm to false to run faster.

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. as_text gives one line per event, e.g. "0.52-0.81s | -14dB | tonal | bright | A5 glide -12st | sharp attack". Also reports spacing regularity and the sequence of pitches. The threshold adapts to the background level; set threshold_db (dBFS) to override. split_on_onsets=false keeps continuous sounds (e.g. a sentence) as one event.

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 uncertain_words (likely mis-hearings). model: tiny/base/small/medium/large-v3/turbo (bigger = more accurate, slower; first use downloads it). language: ISO code like "en" to skip detection. initial_prompt: names or jargon to help spelling. Use start/end to transcribe part of a long recording.

audio_batch_surveyA

Analyze a folder (recursive; filter with a glob pattern like ".wav" or "footstep") or a list of files, and report how consistent they are: loudness outliers, mixed sample rates/channels/formats, inconsistent leading silence, files with problems. Includes suggested_fixes with ready-to-use operations for audio_batch_process, and a per-file table.

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 fix: an ordered audio_process operations list that was simulated on this file (fix.verified), plus cannot_fix for problems no processing can solve (clipping, a noise floor too high to remove without damaging speech, wrong length). Specs: apple_podcasts, spotify, youtube, ebu_r128, atsc_a85, acx_audiobook, game_sfx (spec="list" describes them). Each result cites its sources and the date they were checked. After a fix that includes denoise, verify the words with audio_transcribe.

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 categories, e.g. {"audio/stingers": "music", "/click_": "ui"}), import settings from the .import files (music/ambience that doesn't loop, SFX/UI that do, clicky loop seams, never-imported files), loudness consistency per category (one-shots by LUFS momentary max, music/ambience by integrated LUFS; outliers, median, spread), per-file problems (clipping, leading silence, clicky ends, DC offset, mixed sample rates, stereo SFX) and res:// references in .tscn/.tres/.gd/.cs files (broken paths, wrong letter case, unreferenced files). Returns summary, per-category categories stats with suggested_batch for audio_batch_process, and issues sorted problem > warning > info, each with a res:// file and a fix (audio_process operations or an editor step). res://x means <project_dir>/x. Read-only: never modifies the project. Analyzes at most max_files files, each over its first max_seconds (loop seams use the real loop points).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 14 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues