Mac Voice MCP vs Spoken
A side-by-side look at the Mac Voice MCP and Spoken MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Mac Voice MCP for speech-to-text work as a local process; choose Spoken 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 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.
Choose Spoken when
- You need dedicated capabilities in the Speech-to-Text domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: API key required.
- You want tools like
search_podcasts, get_transcript, list_episodes.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Speech-to-Text | Speech-to-Text |
| Quality signal | 60/100 · Good | 65/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | API key required |
| Pricing | Not declared | Freemium |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 5 |
| Directory activity | 2 views 0 installs 0 upvotes | 4 views 0 installs 0 upvotes |
| Tools | 2 | 8 |
| Full listing | View Mac Voice MCP | View Spoken |
Tools & capabilities
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.
Spoken tools 8
search_podcastsSearch published podcast episodes by text query, or paste an episode URL (Spotify, YouTube, etc.). Returns matching episodes with their id, title, podcast, podcast_id, and date. Use the id with get_transcript, or the podcast_id with list_episodes to get the show's whole back-catalog. Does not consume credits.get_transcriptFetch a podcast episode's transcript as clean Markdown with real speaker names and timestamps. Pass an episode id from search_podcasts. Costs 1 credit on the first fetch of an episode; repeat fetches are free and errors are never charged.list_episodesList a podcast's entire back-catalog (every episode, newest first). Pass a podcast_id from a search_podcasts result. Returns each episode's id, title, and date — fetch any with get_transcript. Use this to transcribe a whole show. Does not consume credits itself; transcribing the returned episodes costs 1 credit each (repeat fetches are free), so make sure the key has enough credits before looping.get_balanceCheck the current Spoken credit balance, account email, and recent usage for the configured API key. Does not consume credits.list_followingThe shows this key is kept current on. Every charged fetch makes its show a follow: the five most-fetched shows from the last 180 days are followed automatically (source 'fetch'), and up to 25 more can be declared with follow_podcast (source 'explicit'). Muted shows are listed separately. Use list_new_episodes to see what is new on them. Does not consume credits; the demo key has nothing to follow with.follow_podcastDeclare a follow for a show, or clear a mute. Pass a podcast_id from search_podcasts. A declared follow stays until unfollow_podcast, regardless of fetch activity, and does not use one of the five automatic slots. For a show never fetched, what counts as new starts from its newest episode now. Does not consume credits.unfollow_podcastMute a show: it leaves the followed list and later fetches do not re-add it. follow_podcast reverses it. Pass a podcast_id from list_following. Does not consume credits.list_new_episodesWhat is new on the shows this key follows: for each show, the episodes released in the last 90 days that are newer than the newest one already fetched from it (up to 10 per show), each with a transcript_url. Episodes with no transcript are left out. Fetch any with get_transcript (1 credit each on first fetch); a fetch raises that show's floor, so the next call lists only what came after. Refreshed hourly, so a show followed moments ago may be empty until its first poll. Does not consume credits.
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.
Mac Voice MCP
{
"mcpServers": {
"mac-voice-mcp": {
"command": "npx",
"args": [
"-y",
"mac-voice-mcp@latest"
]
}
}
}
Spoken
{
"mcpServers": {
"spokenmd-spoken": {
"command": "npx",
"args": [
"-y",
"spoken-mcp"
]
}
}
}
Frequently asked questions
Mac Voice MCP is categorized under Speech-to-Text and uses a local stdio subprocess. Spoken belongs to Speech-to-Text and uses a local stdio subprocess. Pick Mac Voice MCP for speech-to-text work and Spoken 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.
Mac Voice MCP has no declared pricing — check the project's own site. Spoken is listed as freemium — a free tier with paid plans. Auth: api key required. 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 mac-voice-mcp and spokenmd-spoken as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Mac Voice MCP has a quality signal of 60/100 (Good) with 2 views, 0 installs and 0 GitHub stars. Spoken has 65/100 (Great) with 4 views, 0 installs and 5 GitHub stars.