@hyperwhisper/mcp package is a Model Context Protocol bridge for the local API. You configure this bridge one time. Then any MCP-capable agent can call HyperWhisper as a tool: Cursor, Claude Desktop, Claude Code, Zed, or your own code.
Prerequisites
- Install HyperWhisper for macOS or Windows, then open it one time. Both apps write the discovery file that the bridge reads.
- Turn on the local API server: Settings → API Server on macOS, or Settings → Local API on Windows. This setting writes the discovery file that the bridge reads.
- Put Node.js 18 or newer on your
PATH. Runnode --versionto see the version number. If the command fails, install Node.js from nodejs.org. Node.js includes thenpxcommand.
npx -y @hyperwhisper/mcp command downloads the bridge and runs it on demand. Each MCP client in this page uses that command directly.
Tools the bridge supplies
Cursor
Open~/.cursor/mcp.json. Add the hyperwhisper entry:
Claude Desktop
Open~/Library/Application Support/Claude/claude_desktop_config.json. Add the same entry:
hyperwhisper.
Claude Code
Run the CLI helper:/mcp lists hyperwhisper with its tools.
Make sure that the bridge works
Open a new agent session. Then give the agent this instruction:transcribe tool and returns the text inline. If you do not have an audio file, use this instruction instead: Ask hyperwhisper to run a health check. The agent then calls health and reports the version of the app.
transcribe reads files only in your HyperWhisper recordings folder. The tool rejects a different path such as /Users/me/Desktop/test.wav (FILE_ACCESS_DENIED on macOS, FILE_NOT_ALLOWED on Windows). The agent can use a file that HyperWhisper saved (see History), or an audio file that you copied into that folder.Write transcripts to a file
For a long recording, ask the agent to save the transcript to a file instead:output_path. The agent can also set post_process_preset or post_process_prompt to clean the text first. The bridge then writes the file and returns a short confirmation, not the full transcript. The confirmation payload contains ok, the resolved if_exists mode, and written_to (the resolved absolute path of the file). It also contains the bytes of the file, the engine/model/language in use, latency_ms, the post_processed result, a character count, a 200-character preview, and an optional warning field. The full transcript never enters the context of the agent.
If the file exists, the tool fails by default. The agent can pass if_exists: "overwrite" or if_exists: "append". The append mode is useful for a notes file that grows.
Troubleshooting
HYPERWHISPER_NOT_RUNNING — the discovery file is missing. Open HyperWhisper. Then turn on the local API server (Settings → API Server on macOS, Settings → Local API on Windows). Run the agent prompt again.
INVALID_REQUEST — a general bad-request code. Usually the bearer token in the discovery file does not match the token that the server expects, and you see an HTTP 401. This mismatch occurs after you use Regenerate token in Settings. The bridge reads the discovery file again on each request, and the next agent call is successful.
INVALID_ARGUMENTS — the bridge returns this code for a bad call, before the request reaches HyperWhisper. Examples: a missing required field, post_process_preset/post_process_prompt on transcribe without output_path, or timestamp_granularities with output_path.
Connection refused — a force-quit stopped the app before its cleanup, and the port in the discovery file is out of date. Turn the Local API switch off, then on again. This writes a new local-api.json file.
npx hangs on first run — npx -y downloads the package on the first run. Later runs start immediately. If your network blocks the npm registry, install the package one time with npm i -g @hyperwhisper/mcp. Then replace npx -y @hyperwhisper/mcp with hyperwhisper-mcp in the configuration examples in this page.
Other app-level error codes — the app returns a fixed set of error codes for tool calls: MODEL_NOT_INSTALLED, MODEL_NOT_FOUND, ENGINE_UNAVAILABLE, MISSING_API_KEY, FILE_NOT_FOUND, FILE_ACCESS_DENIED, FILE_NOT_ALLOWED, AUDIO_DECODE_FAILED, TRANSCRIPTION_FAILED, MODE_NOT_FOUND, MODE_NAME_TAKEN, INVALID_REQUEST, RATE_LIMITED, and
TIMEOUT. Each code comes with a message in clear language that the agent can give to you.