Call Recorder MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CALL_RECORDER_DIR | No | Where recordings and transcripts go. | ~/CallRecordings |
| CALL_RECORDER_HOME | No | Helper app, models, vocabulary. | ~/Library/Application Support/call-recorder-mcp |
| CALL_RECORDER_LOCALE | No | Language of replies and transcript labels: en or fr (others fall back to English). | your Mac's language |
| CALL_RECORDER_LANGUAGE | No | Default transcription language (en, fr, auto, etc.). | same as the locale |
| CALL_RECORDER_VOCABULARY | No | Vocabulary file. | <home>/vocabulary.txt |
| CALL_RECORDER_SIGN_IDENTITY | No | Code signing identity used by call-recorder-setup. | first Apple Development identity |
| CALL_RECORDER_WHISPER_MODEL | No | Any whisper.cpp model. | <home>/models/ggml-large-v3-turbo-q5_0.bin |
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 |
|---|---|
| start_recordingA | Start recording a call or a conversation. source: "system" (all the Mac's audio, the safest), "whatsapp", "teams", "zoom", "slack", "facetime", "browser" (all browsers), "chrome", "safari", "firefox", "arc", "edge", or a bundle ID prefix (e.g. "com.microsoft.teams2"). title: name of the conversation (used for the folder name). include_mic: also record the microphone (the user's voice). language: transcription language ("en", "fr", "auto"...). Defaults to the user's language. speakers: number of people on the other side (default 1). Above 1, their voices are separated in the transcript (Speaker 1, Speaker 2...). live: also transcribe as the call goes, to follow it with get_live_transcript. Use it when the user wants help during the call (questions to ask, answers to dig into). |
| recording_statusA | Whether a recording is in progress, for how long, and the recent sound levels of each side (-120 dB on the other side means no sound is being captured). |
| stop_recordingB | Stop the recording in progress and start its transcription. speakers: number of people on the other side, if different from the one given at start (0 = unchanged). For a group call, ask the user. language: overrides the language chosen at start. Returns the transcript if it is ready within wait_seconds, otherwise says to call get_transcript later. |
| get_live_transcriptA | Live transcript of the recording in progress (started with live=true): what was said since
the cursor To follow a call and help the user in real time, call it in a loop within the same turn,
passing the returned cursor as |
| get_transcriptA | Transcript of a recording ("latest" or the folder name), waiting up to wait_seconds if it is still running. |
| transcribe_recordingB | Transcribe an existing recording again, e.g. in another language, or to separate voices: speakers = number of people on the other side (0 = unchanged). |
| transcribe_fileB | Transcribe an existing audio or video file (WhatsApp voice note .opus, .m4a, .mp3, .mp4, meeting recording...), copied into a new recording folder. speakers: total number of people speaking in the file (above 1, their voices are separated into Speaker 1, Speaker 2...). |
| rename_speakersC | Replace speaker labels in a transcript with real names, e.g. {"Speaker 1": "Alice"} (labels are in the user's language, as shown in the transcript). Returns the updated transcript. |
| list_recordingsC | Latest recordings and their transcription state. |
| list_audio_sourcesB | Apps currently using audio (to choose the source), and the default microphone and output. |
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 10 tools
Most tools target distinct actions in a clear lifecycle (start/stop/status/list/transcribe/rename). The closest pair is get_transcript vs get_live_transcript and transcribe_recording vs get_transcript, but descriptions clearly separate retrieving an existing transcript, following a live call, and re-transcribing an existing recording.
Nine of ten tools follow a verb_noun snake_case pattern (start_recording, stop_recording, get_transcript, list_recordings, etc.). The only deviation is recording_status, a noun-only name, which is still readable but slightly breaks the pattern.
Ten tools is well within the ideal range and each maps to a distinct step: capture setup, recording control, live monitoring, transcription, and speaker labeling. No tool feels redundant or filler.
The surface covers the full capture-to-transcript lifecycle including live follow-along and re-transcription in another language. Minor gaps exist around housekeeping (deleting recordings, exporting/editing transcripts), but agents can work around these.