About audioport
audioport is a CLI and MCP server for common local audio tasks, aimed at people processing audio files. It uses ffmpeg and ffprobe, and delegates transcription to a separately configured local command.
Key features
- 01Read audio metadata
- 02Convert common audio formats
- 03Trim audio segments
- 04Normalize loudness with ffmpeg
- 05Transcribe through configured command
Use cases
- 01Inspect a file’s format and duration
- 02Convert WAV, FLAC, or MP3 files
- 03Extract a segment by start time
- 04Transcribe using a configured local engine
MCP support
Its stdio MCP server exposes tools for metadata lookup, conversion, trimming, normalization, and transcription of audio files.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
5Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| input | string | Yes | Path to the input audio file to read metadata from. |
Details
From the project READMEaudioport
audioport does everyday audio work on local files. It reads the facts ffprobe reports about a file — its format, duration, bit rate, sample rate, and channel count — converts between the common audio formats, cuts a segment out of a file starting at a chosen second, and normalizes loudness with ffmpeg's loudnorm filter. A fifth tool transcribes, but only through a transcription engine you configure yourself; audioport bundles no engine and invents no transcripts.
All processing runs through the ffmpeg and ffprobe binaries on
the machine, invoked with argument arrays (never a shell), so those
binaries must be installed for the processing tools to work. When
they are missing, the binary's own error is returned instead of a
made-up result.
Transcription
Transcription is delegated to a local command named by the
AUDIOPORT_TRANSCRIBER_COMMAND environment variable. The command is
run with the audio file path as its last argument, and its stdout
is the transcript. For example:
export AUDIOPORT_TRANSCRIBER_COMMAND="whisper-cli --model base"
When the variable is unset, transcribe and the transcribe_audio
tool fail with an error naming AUDIOPORT_TRANSCRIBER_COMMAND.
There is no API key, no hosted service, and no fallback that
guesses at the words.
Install
npx @reneturcios/audioport metadata song.mp3
Or run the container image:
docker run -i ghcr.io/cloudcorprecords/audioport
The container defaults to the MCP server (see below) and bundles no ffmpeg/ffprobe; use a host install, or a derived image with ffmpeg installed, for the processing tools. Pass CLI arguments to use it as a CLI instead.
CLI
audioport metadata song.mp3
audioport convert song.wav song-out.mp3 mp3 --bitrate 192k
audioport trim song.mp3 clip.mp3 5 --duration 10
audioport normalize song.wav song-normalized.wav
audioport transcribe song.mp3 --language en
audioport --version
The convert command writes to the output path with its extension
replaced by the target format when they differ (converting
song-out.ogg to mp3 writes song-out.mp3). Supported formats:
mp3, wav, ogg, flac, aac, m4a.
Each command prints its result as JSON. Exit codes: 0 on success,
1 when processing fails (including a missing transcription
engine), 2 for usage errors.
MCP server
One bin serves both faces. The mcp subcommand starts a stdio MCP
server:
npx -y @reneturcios/audioport mcp
MCP client configuration:
{
"mcpServers": {
"audioport": {
"command": "npx",
"args": ["-y", "@reneturcios/audioport", "mcp"],
"env": { "AUDIOPORT_TRANSCRIBER_COMMAND": "whisper-cli --model base" }
}
}
}
Tools
| Tool | Input | What it returns |
|---|---|---|
get_audio_metadata | input (required) | Format, duration in seconds, bit rate, sample rate, and channels; fields ffprobe did not provide are null. |
convert_audio | input, output, format (required), bitrate (optional) | The effective output path (extension follows the format), format, and bit rate. |
trim_audio | input, output, start (required), duration (optional) | The output path, start second, and duration. |
normalize_audio | input, output (required) | The input and output paths, after a loudnorm pass. |
transcribe_audio | input (required), language (optional) | The transcript from the configured engine, or an error naming AUDIOPORT_TRANSCRIBER_COMMAND when none is configured. |
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, fake executors only
npm run dev # run the CLI from source via tsx
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.