m4x
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., "@m4x transcribe my latest voice memo"
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.
m4x — local, private audio transcription
Turn voice memos and podcasts into text entirely on your own machine. m4x is a thin, fast wrapper around whisper.cpp that ships as both a command-line tool and an MCP server for AI agents.
Think of it as a tiny, local-first alternative to cloud transcription products (Plaud, Otter, etc.) — with one big difference: your audio never leaves your computer. No account, no upload, no API key, no per-minute fee. It runs beautifully on Apple-silicon Macs (Metal-accelerated) but works anywhere whisper.cpp does.
⚡ On an Apple M-series machine, the
large-v3-turbomodel transcribes roughly an hour of audio in a couple of minutes, fully offline.
Why local?
m4x (local) | Typical cloud transcriber | |
Where your audio goes | Stays on your machine | Uploaded to a third party |
Account / API key | None | Required |
Cost | Free | Per-minute or subscription |
Works offline | Yes | No |
Summaries | Bring your own LLM (see below) | Built-in (cloud) |
Related MCP server: MCP Audio Server
Requirements
Python 3.10+
whisper.cpp (
whisper-cli) — install via Homebrew:brew install whisper-cppA ggml model — download once (see below)
Install
# 1. the transcription engine
brew install whisper-cpp
# 2. a model (large-v3-turbo: great quality/speed; ~1.5 GB)
mkdir -p ~/whisper-models
curl -L -o ~/whisper-models/ggml-large-v3-turbo.bin \
https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3-turbo.bin
# 3. m4x itself
pipx install . # or: pip install .CLI usage
# a single voice memo
m4x transcribe ~/Downloads/memo.m4a
# -> writes ~/Downloads/memo.txt
# a whole folder of podcasts, German
m4x transcribe ~/Podcasts --lang de
# print to stdout and pipe straight into your own LLM for a summary
m4x transcribe interview.mp3 --stdout | llm "summarise this into 5 bullet points and action items"Options: --lang (e.g. en, de, or auto), --model <path>, --out <dir>, --stdout.
MCP usage (Claude Desktop & other agents)
m4x also runs as an MCP server so an agent can transcribe for you. Long files run as a background job — start, then poll.
Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"m4x": {
"command": "m4x-mcp"
}
}
}Tools exposed: transcribe_start(file_path, language) → job_id, transcribe_result(job_id), transcribe_list_jobs().
"Mini-Plaud" pattern: transcribe → summarise
m4x deliberately does transcription only and stays out of the AI-summary business, so you keep full control (and privacy) over that step. Pair it with any LLM you like:
m4x transcribe standup.m4a --stdout | llm "Extract decisions, owners, and due dates as a table"Or, in an agent: call transcribe_start, poll transcribe_result, then ask the model to summarise the returned text.
Configuration
Everything has sensible defaults; override via environment variables:
Variable | Default | Meaning |
|
| Path to the whisper.cpp binary |
|
| Path to the ggml model |
How it works
m4x shells out to whisper-cli with your chosen model and language, writes a .txt transcript next to the audio (or to --out), and returns the text. The CLI and the MCP server share one small core module — no duplicated logic. That's the whole thing: ~200 lines, no magic.
License
MIT — see LICENSE. Contributions welcome; see CONTRIBUTING.md and SECURITY.md.
Available Tools
3 toolstranscribe_list_jobsA
List all known transcription jobs and their statuses.
Inputs: no named parameters. Returns: result
transcribe_resultA
Get the result of a transcription job started with transcribe_start.
Returns "running" if still in progress, the transcript text if done, or a diagnostic message if it failed.
Inputs: job_id (required). Returns: result
transcribe_startA
Start a transcription job and return a job_id immediately.
Args: file_path: Absolute path to an audio file (mp3, wav, m4a, …). language: Language code ('en', 'de', 'auto'). Default 'auto'.
Returns: A job_id string. Pass it to transcribe_result to poll for the transcript.
Inputs: file_path (required), language. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool has a distinct purpose: starting a job, listing jobs, and retrieving results. There is no overlap or ambiguity.
All tools follow the consistent pattern 'transcribe_<action>', using snake_case and verb_noun structure.
3 tools is minimal but appropriate for a simple transcription service covering the core workflow. Could be expanded, but not insufficient.
The set covers starting, polling results, and listing jobs, which are the essential operations. Missing cancellation or deletion, but not critical for the domain.
Maintenance
Related MCP Connectors
MCP server for Speech-to-Text
OCR, transcription, file extraction, and image generation for AI agents via MCP.
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server for offline speech-to-text and speaker diarization, enabling AI agents to transcribe audio locally without cloud APIs.68 PyPI3MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that gives AI agents the ability to process audio files — transcribe speech to text, detect spoken languages, and extract audio metadata.1-
- AlicenseBqualityCmaintenanceLocal-only transcription server for MCP agents, powered by CrispASR. Transcribes audio/video files without cloud uploads, supporting English and Chinese.101MIT
- AlicenseNot gradedqualityDmaintenanceLocal-first speech-to-text and text-to-speech MCP server. Hot-swappable engines via config.yaml — no code changes, no API keys required.2MIT