Local MCP server exposing MacWhisper transcription to Claude Desktop.
Strong tool naming (verb-first, clear intent) and comprehensive parameter descriptions. All 7 tools have detailed docstrings explaining WHAT, WHEN, and prerequisites. Input schemas are present with type definitions and descriptions for all parameters. However, output schemas are not formally documented, return types are described in prose but lack structured JSON Schema definitions. Error handling is present but inconsistent: transcribe_audio has good recovery guidance, but other tools lack actionable error messages. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles (READ_ONLY, WRITE, REVERSIBLE marked in metadata).
Cancel the currently running transcription, if any.
Retrieve completed transcriptions from the watcher.
Return the directories this server is allowed to read audio from.
Return the transcription models available across all engines. MacWhisper entries are formatted as ``engine:model-id — Display Name [active]`` where ``[active]`` marks the model currently selected in MacWhisper; pass the ``engine:model-id`` string as ``model`` with the default ``engine="macwhisper"``. whisper-cpp entries (if ``MACWHISPER_WHISPERCPP_MODEL_DIR`` is configured) are formatted as ``filename [whisper-cpp]``; pass the filename as ``model`` with ``engine="whisper-cpp"``. Requires the MacWhisper CLI to be reachable even if you only intend to use the whisper-cpp engine.
Start watching a folder for new audio files to auto-transcribe. New audio files dropped into ``folder`` are transcribed automatically and moved to a "done" directory. By default this is ``<folder>/../done``; override it with the ``MACWHISPER_WATCH_DONE_DIR`` env var. Both the incoming folder and the done directory must be inside the configured allow-list, otherwise the call is rejected. Call ``get_watch_results()`` to retrieve completed transcriptions.
Output schemas not formally documented. Tools return strings or lists but lack JSON Schema definitions of structure, fields, and types. LLMs cannot reliably parse or chain results.
Tool annotations missing. Risk profiles (READ_ONLY, WRITE, REVERSIBLE) are documented in metadata but not exposed via MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot infer safety properties.
Inconsistent error guidance. transcribe_audio provides recovery hints ('ask the user to save the file locally'), but cancel_transcription and stop_watch return bare status strings without actionable next steps on failure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Stop watching the current folder.
Transcribe a local audio file and return the transcript. IMPORTANT: ``path`` must be a file on the user's Mac filesystem inside the configured allow-list (typically ~/Desktop or ~/Downloads). Files uploaded to the Claude chat window are NOT accessible — ask the user to save the file to their Desktop or Downloads folder first. If this tool returns an access-denied error, do NOT attempt to transcribe the file by any other means (e.g. downloading a model, calling an external API, or using in-process speech recognition). Simply tell the user to save the file locally and retry with this tool.
Minimal descriptions for simple tools. cancel_transcription and stop_watch have 1-sentence descriptions (<30 chars). Lacks context on when to use, prerequisites, or what happens on error.
list_models and get_watch_results return unstructured lists/strings. No pagination, count, or structured field definitions. Large result sets could exhaust context; agents cannot reliably extract specific fields.