whisper-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WHISPER_MCP_STATE_DIR | No | Set this in the server's env (via your MCP client config) to put state files (sessions.json, transcripts/, logs/) elsewhere. By default everything lives under ~/.whisper-mcp/. | ~/.whisper-mcp/ |
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 a local Whisper mic transcription session. Spawns transcribe_mic.py as a detached subprocess. Only one session can be active at a time — call stop_recording first. Args: topic: short label (e.g. "1:1 with Ragini"). Used in the filename; defaults to "recording". Spaces/punctuation are kebab-cased. model: faster-whisper model name. Default "small". Options: tiny, base, small, medium, large-v3. "small" is a good balance for meetings. language: ISO code. Default "en". Returns: {session_id, transcript_path, pid, started_at, topic} |
| stop_recordingA | Stop the active (or named) recording and return the final transcript. Sends SIGINT so transcribe_mic.py flushes its audio buffer before exiting (clean shutdown — the script traps SIGINT for this purpose). Waits up to 15s for the process to exit, then SIGTERMs as a backstop. Args: session_id: optional. Defaults to the currently-active session. Returns: {session_id, text, line_count, duration_sec, transcript_path, status} |
| get_transcriptA | Read the transcript for the active (or named) session. Safe to call mid-recording — the transcript file is line-buffered. Use
Args: session_id: optional. Defaults to active session, else most recent. tail_lines: if set, return only the last N lines. since_offset: if set, return only bytes after this offset in the file. tail_lines takes precedence if both are provided. Returns: {session_id, text, end_offset, line_count, is_recording, last_modified} |
| get_statusA | Return the currently-active recording session, if any. Also reaps any session whose subprocess died (marks it 'stopped_unexpectedly'). Call this before start_recording if you want to confirm the slot is free. Returns: {active: session dict or null, recent: last 3 sessions} |
| list_sessionsA | List recent recording sessions, newest first. Args: limit: max number to return (default 10). |
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 5 tools
Each tool targets a distinct action in the recording lifecycle (status, list, start, stop, read). get_status and list_sessions overlap somewhat since get_status also returns the last 3 sessions, but the primary intent of each (active slot check vs. historical list) is clear enough to distinguish.
All five tools follow a clean verb_noun snake_case pattern (get_status, list_sessions, start_recording, stop_recording, get_transcript) with no deviations or mixed conventions.
Five tools is well-scoped for a focused single-purpose recording server; each tool earns its place covering a distinct phase of the session lifecycle without redundancy.
The core lifecycle is covered: start, stop, status, list, and transcript retrieval, including clean shutdown and incremental polling. Minor gap is the absence of a delete/cleanup tool for old sessions or transcripts, but agents can work around this.