SpeechWeave vs Mac Voice MCP
A side-by-side look at the SpeechWeave and Mac Voice MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose SpeechWeave for speech-to-text work as a local process; choose Mac Voice MCP for speech-to-text as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose SpeechWeave when
- You need dedicated capabilities in the Speech-to-Text domain.
- You prefer a local stdio subprocess transport.
- You want tools like
transcribe_file, transcribe_url, start_job_file.
Choose Mac Voice MCP when
- You need dedicated capabilities in the Speech-to-Text domain.
- You prefer a local stdio subprocess transport.
- You want tools like
speak_and_listen, voice_setup.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Speech-to-Text | Speech-to-Text |
| Quality signal | 59/100 · Good | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 0 |
| Directory activity | 1 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 8 | 2 |
| Full listing | View SpeechWeave | View Mac Voice MCP |
Tools & capabilities
SpeechWeave tools 8
transcribe_fileUpload a local audio/video file and wait until transcription finishes. Prefer for short/medium clips when you need the transcript in this turn. Pass an absolute filesystem path (never raw binary). Set task='translate' to get an English translation instead of a same-language transcript. On wait timeout, returns job_id, then call get_job_status. For long audio you plan to poll yourself, use start_job_file instead.transcribe_urlStart transcription from a public HTTPS URL and wait until it finishes. Prefer for short/medium media when you need the transcript in this turn. Set task='translate' to get an English translation instead of a same-language transcript. On wait timeout, returns job_id, then call get_job_status. For long audio you plan to poll yourself, use start_job_url instead.start_job_fileUpload a local audio/video file and return a job id immediately without waiting. Use for long recordings or when you will poll later with get_job_status. Pass an absolute filesystem path. Set task='translate' for an English translation instead of a same-language transcript.start_job_urlCreate a transcription job from a public HTTPS URL and return a job id immediately. Use for long media or deferred workflows; poll with get_job_status until completed, failed, or cancelled. Set task='translate' for an English translation instead of a same-language transcript.get_job_statusFetch the current status of a transcription job (and transcript when completed). Poll until status is completed, failed, or cancelled. Pass response_format ('srt', 'vtt', or 'verbose_json') on a completed job to fetch it re-formatted.cancel_jobCancel a queued or processing transcription job. Fails if the job is already terminal.get_limitsFetch upload size ceilings for the calling API key (GET /v1/limits). Returns max_input_bytes, sync_max_bytes, and proxy_max_bytes plus MB equivalents. Call before transcribe_file or start_job_file when file size is large.fetch_docReturn public SpeechWeave documentation for a slug. Use slug 'list' for the catalog. Bundled pages include quickstart, mcp, models, billing, and data_retention. Use slug 'api' for a live OpenAPI overview, or 'api/<operation_slug>' for one endpoint (e.g. api/get_v1_limits).
Mac Voice MCP tools 2
speak_and_listenSay something out loud to the user and hear their spoken reply. Speaks text_to_speak through the computer's speakers, then listens like a conversation turn — it waits for the user to start talking and stops when they finish — and returns an on-device transcript of what they said. Write text_to_speak for the ear, not the screen: - 1–3 short sentences, under ~40 words; lead with the outcome, then one question. - Plain words only: no markdown, bullets, emoji, code, file paths, URLs, stack traces or tables. - Describe code instead of reading it ("I added a retry to the upload function"), say file names not paths ("in index.ts"), round numbers ("about two hundred ms"), spell out symbols. - Ask one question at a time, answerable in a few words ("Should I deploy it — yes or no?"). - Put the details (diffs, logs, links) in your normal on-screen reply, and say so out loud. - Tool output (Bash stdout, file writes) is NOT the on-screen reply. Only your own assistant message text renders. - A spoken turn with no assistant message text shows the user nothing — never skip the on-screen reply. Good: "The build passed and all tests are green. Want me to open the pull request?" Bad: "## Results\n- `npm test` ✅ 42/42\n- see /Users/x/repo/src/index.ts:120" Once the user is talking with you by voice, keep the conversation in voice: answer each transcript with another speak_and_listen call (not a text reply) until they say stop or start typing. To end voice mode, or for a one-way announcement, pass listen: false: it returns at once and speaks while you work. A reply of "(No speech detected …)" means the user did not answer — never treat it as consent. Ask once more; if still nothing, stop and say on screen that voice mode is paused and they can type to carry on (not speak: the mic is off). The "voice-mcp timing" line at the end is diagnostics: ignore it unless the user asks why things feel slow. If it reports that voice-mcp is not set up, call voice_setup.voice_setupCheck whether this computer has everything speak_and_listen needs — text-to-speech, a microphone recorder (SoX), whisper.cpp speech-to-text and the speech model — and optionally install what's missing. Anything already installed is reused (an existing model elsewhere on disk is symlinked, not re-downloaded). Call it with install=false (the default) first and tell the user what is missing. Only call it with install=true after the user agrees: it runs `brew install` for the missing packages and downloads the speech model once. It never uninstalls or changes anything else. kokoro=true (also only after the user agrees) installs the optional Kokoro voice: more natural than the built-in one, runs on this Mac, about 1 GB on disk. Once installed it's used automatically; the built-in voice stays as the fallback. If it reports INSTALLING, the install continues in the background — wait a minute and call it again to check.
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
SpeechWeave
{
"mcpServers": {
"speechweave": {
"command": "npx",
"args": [
"-y",
"@speechweave/mcp"
]
}
}
}
Mac Voice MCP
{
"mcpServers": {
"mac-voice-mcp": {
"command": "npx",
"args": [
"-y",
"mac-voice-mcp@latest"
]
}
}
}
Frequently asked questions
SpeechWeave is categorized under Speech-to-Text and uses a local stdio subprocess. Mac Voice MCP belongs to Speech-to-Text and uses a local stdio subprocess. Pick SpeechWeave for speech-to-text work and Mac Voice MCP for speech-to-text.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
SpeechWeave has no declared pricing — check the project's own site. Mac Voice MCP has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add speechweave and mac-voice-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, SpeechWeave has a quality signal of 59/100 (Good) with 1 views, 0 installs and 0 GitHub stars. Mac Voice MCP has 60/100 (Good) with 2 views, 0 installs and 0 GitHub stars.