Meeting Transcriber
FreeNot checkedstdio MCP server for the Meeting Transcriber macOS app: submit audio, read diarized transcripts, and control meeting watching over its localhost automation API.
About
stdio MCP server for the Meeting Transcriber macOS app: submit audio, read diarized transcripts, and control meeting watching over its localhost automation API. Fully on-device.
README
A Model Context Protocol stdio server for Meeting Transcriber, the local-first meeting transcriber for macOS. It lets an agent submit an audio file, read the diarized transcript, name the speakers, and turn meeting detection on or off — without any of the audio leaving the Mac.
This is a thin client over the app's own Local Automation API, a localhost-only HTTP surface the app ships for exactly this purpose. No audio, models or transcripts pass through any cloud service: the transcription runs on the Apple Neural Engine and this server only moves file paths and text over the loopback interface.
Requirements
- macOS 14.2+ with Meeting Transcriber installed from Homebrew or built from source. The
automation API is compiled out of the App Store variant, because that sandbox forbids the
network.serverentitlement the listener needs. - Node.js 20 or newer.
- The automation API turned on. It is off by default:
- Settings → Advanced → "Local Automation API" for a persistent toggle, or
- launch the app with
MEETINGTRANSCRIBER_DEBUG_RPC=1for one session.
The app writes a bearer token to
~/Library/Application Support/MeetingTranscriber/.rpc-token (mode 0600) on first launch of
the API. This server reads it from there, so there is nothing to configure by hand. The token
rotates whenever the API is toggled off and on; the server re-reads the file and retries once
when the app rejects a stale copy.
Setup
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"meeting-transcriber": {
"command": "npx",
"args": ["-y", "meeting-transcriber-mcp"]
}
}
}
Claude Code
claude mcp add meeting-transcriber -- npx -y meeting-transcriber-mcp
From source
git clone https://github.com/msvargas/meeting-transcriber-mcp.git
cd meeting-transcriber-mcp
npm install && npm run build
Then point the command at node with args of ["/absolute/path/to/dist/index.js"].
Tools
| Tool | What it does |
|---|---|
transcribe_file |
Submit one file and wait for the diarized transcript. Runs headless, so a multi-speaker recording finishes on its own with auto-assigned names |
enqueue_files |
Queue one or more files and get job ids back immediately |
get_job |
Read a job's state, result paths, transcript and optionally the generated Markdown protocol |
get_naming |
Read the speaker labels a job is waiting to have named, with the app's suggestions |
confirm_naming |
Assign real names to diarization labels so a parked job can finish |
skip_naming |
Let a job finish with the names the app assigned itself |
get_watch_status |
Read whether the app is watching for meetings, and whether its permissions are healthy |
set_watch |
Start or stop automatic meeting detection |
Two deliberate omissions
No microphone recording control. The app's API can start and stop a microphone-only recording for an in-person meeting, and this server does not expose it. Nobody in the room can see an agent decide to record them, and the app's own docs note that a start can raise a permission dialog "unannounced". Drive that from the menu bar or a Stream Deck key instead.
No toggle on set_watch. A toggle applies a delta to a state the caller cannot see
reliably, so if the meeting ended or somebody used the menu bar in between, it does the opposite
of what was intended and stays inverted. start and stop express the desired end state and
converge no matter what happened before.
Configuration
Every variable is optional.
| Variable | Default | Purpose |
|---|---|---|
MEETING_TRANSCRIBER_BASE_URL |
http://127.0.0.1:9876 |
Where the app's API listens |
MEETING_TRANSCRIBER_TOKEN_PATH |
The app's token file under Application Support |
Read the bearer token from somewhere else |
MEETING_TRANSCRIBER_TOKEN |
unset | Pin the token directly instead of reading a file. Disables the re-read-on-401 recovery |
MEETING_TRANSCRIBER_TIMEOUT_MS |
30000 |
Budget for the short endpoints. transcribe_file derives its own from maxWaitSeconds |
Reading the results
Two fields are easy to misread, so the server spells them out in prose.
An absent echo verdict is not a clean one. On a loudspeaker recording the far end lands on the microphone track too, and the app measures that before transcribing. When the verdict is missing, nothing was measured — the job was single-source, a track was silent, or the tracks overlapped for less than one analysis window. Only an explicit "not detected" means analysed and clean, and this server never collapses the two.
A job in error is not always final. A user can retry it from the menu bar, which moves the
same id back to waiting. A poller that sees error and keeps polling may well watch the job
run again and end in done.
Inherited limitations
These come from the app's API, not from this server:
- Polling only. There is no webhook or push channel, so a client polls
get_job. On loopback a 3–5 second interval costs effectively nothing. - No upload. A path must already be readable on the Mac running the app. Submitting a file that only exists on another machine fails.
- The speaker database is read-only on this path. Already-enrolled voices are recognized, but no endpoint here enrolls new ones.
- Starting to watch can raise a macOS permission prompt. Grant microphone and screen
recording once interactively before relying on
set_watch.
Development
npm run typecheck
npm test # 26 tests, no running app required: fetch is injected
npm run check # typecheck + tests + repository hygiene
npm run build
bash scripts/smoke.sh # drives the built server over stdio against a real app
The tests connect a real MCP client to the server over an in-memory transport and stub the HTTP layer, so they cover the tool schemas, the status-code mapping and the rendering without touching Meeting Transcriber.
License
MIT
Install Meeting Transcriber in Claude Desktop, Claude Code & Cursor
unyly install meeting-transcriberInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add meeting-transcriber -- npx -y github:msvargas/meeting-transcriber-mcpStep-by-step: how to install Meeting Transcriber
FAQ
Is Meeting Transcriber MCP free?
Yes, Meeting Transcriber MCP is free — one-click install via Unyly at no cost.
Does Meeting Transcriber need an API key?
No, Meeting Transcriber runs without API keys or environment variables.
Is Meeting Transcriber hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Meeting Transcriber in Claude Desktop, Claude Code or Cursor?
Open Meeting Transcriber on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
ARA
Generate images, video and audio from any AI agent — one connector.
by ARAOmni Video
An MCP server that transforms LLM-enabled IDEs into professional video editors by pre-processing footage into text proxies, generating motion graphics via HTML/
by buildwithtazaYouTube
Transcripts, channel stats, search
by YouTubeEverArt
AI image generation using various models.
by modelcontextprotocolgpu-bridge/mcp-server
GPU inference API for LLMs, image and video generation, TTS, Whisper, embeddings, reranking and OCR, paid per use via x402 or an API key.
by gpu-bridgemerterbak/Grok-MCP
Access xAI's Grok API with agentic tool calling, image generation, vision and file support.
by merterbakSureScaleAI/openai-gpt-image-mcp
Image generation and editing with OpenAI's GPT image models.
by SureScaleAIYangLiangwei/PersonalizationMCP
Aggregate personal data from Steam, YouTube, Bilibili, Spotify, Reddit and other gaming, music, video and social platforms, with OAuth2 and token management.
by YangLiangweiAceDataCloud/MCPFlux
Flux image generation and editing from Black Forest Labs via the Ace Data Cloud API.
by AceDataCloudAceDataCloud/MCPNanoBanana
Nano Banana image generation and editing, including virtual try-on and product placement in realistic scenes.
by AceDataCloudCompare Meeting Transcriber with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All media MCPs
