Mac Voice Mcp

io.github.jeet0007由 GitHub 账号 jeet0007 发布v0.9.0更新于 Nov 3, 2026

Talk with your AI assistant out loud on a Mac, with on-device speech recognition (whisper.cpp).

已验证STDIO仅桌面效率与工作流媒体与设计

概览

Mac Voice 的本地 MCP 服务;无需登录;STDIO;5 个工具。

暂无 AI 概览:以下信息来自注册中心条目和服务本身。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Mac Voice Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

🎙️ mac-voice-mcp

Talk with Claude out loud on your Mac.
Natural turn-taking · on-device speech recognition · no audio leaves your computer

[npm version] [npm downloads] [Tests] [Security] [CodeQL]

[Platform: macOS, Apple Silicon] [MCP server] [Node.js 22+] [License: MIT] [Dependabot enabled] [Vibe-coded with Claude]


Claude speaks through your Mac's speakers, listens to your answer the way a person would, and gets back what you said as text. Speech recognition runs on your Mac, so no audio leaves your computer.

Claude ──speak_and_listen("Tests pass. Open the PR?")──▶  🔊 "Tests pass. Open the PR?"                                                         🎙 you: "yes, and tag Priya"Claude ◀──────────────── "Yes, and tag Priya." ─────────  whisper.cpp on your Mac

Perfect for:

  • Long tasks: Claude works quietly and checks in out loud when it needs a decision, so you can step away from the screen.
  • Quick reviews: a 20-second summary of a pull request, then "approve it?"
  • Resting your eyes, or your wrists, after a long day at the keyboard.
  • Thinking out loud: talking a problem through instead of typing it.

Features

  • 🔒 On-device. whisper.cpp transcribes on your Mac. Recordings are deleted after each turn.
  • 📞 Calls. Run /mac-voice-mcp:call and the mic stays open until you hang up: talk whenever you like, while Claude works or waits. With headphones you can talk over Claude, and an optional floating bubble shows the call with mute and hang up (more).
  • 💬 Natural turn-taking. A soft chime, then it waits for you to start, and hands back about 1.5 seconds after you stop. No push-to-talk.
  • ⚡ Fast replies. A warm whisper.cpp server keeps the model loaded, so transcribing takes a fraction of a second on Apple Silicon.
  • 🗣️ A natural voice, if you want one. Uses your best macOS voice, or the optional Kokoro neural voice.
  • ✋ Asks before installing anything. Setup checks what you already have and reuses it.
  • 🙋 Talk while Claude works. Say "Claude, use the other branch" mid-task and it takes it into account at its next step (Claude Code plugin).
  • 🫧 Voice Buddy (optional, Claude Code). A one-line status above the prompt shows when Claude is speaking or listening, your first keystroke interrupts it, and on a call it hands your words to Claude while it waits.
  • 🪟 One mic, many windows. Claude Code, Claude Desktop and Cursor take turns instead of talking over each other.
  • 📏 Measured, not guessed. doctor checks the whole pipeline on your Mac and scores it PASS, WARN or FAIL.

Quick start

You need a Mac (Apple Silicon recommended) and Node.js 22 or newer.

1. Install.

  • Claude Code (recommended). Install the plugin, and Voice Buddy with it:

    /plugin marketplace add jeet0007/mac-voice-mcp/plugin install mac-voice-mcp@mac-voice-mcp/plugin install voice-buddy@mac-voice-mcp

    Voice Buddy is optional: it adds a one-line voice status above the prompt and lets you interrupt by typing (more).

  • Cursor or VS Code: [Add to Cursor] [Install in VS Code]

  • Claude Desktop and other apps: add npx -y mac-voice-mcp@latest as a stdio MCP server. See Install for each app.

2. Set up. Ask Claude to "set up voice" (or run /mac-voice-mcp:setup). It checks for SoX, whisper.cpp and a speech model, shows you what's missing, and installs it only after you say yes.

3. Allow the microphone. The first time Claude listens, macOS asks. Click Allow.

4. Talk. Run /mac-voice-mcp:talk fix the flaky login test, or ask Claude to "check in with me by voice when you need a decision". Reply after the chime. Or start a call with /mac-voice-mcp:call and talk like on the phone; say "hang up" to end it.

Allow voice turns without prompts

Claude Code asks for approval every time Claude wants to speak, which breaks the flow of a conversation. To allow voice turns, add the tool to permissions.allow in ~/.claude/settings.json:

json
{  "permissions": {    "allow": [      "mcp__plugin_mac-voice-mcp_voice-mcp__speak_and_listen",      "mcp__voice-mcp__speak_and_listen"    ]  }}

The first name is for the plugin, the second for claude mcp add voice-mcp …. Leave voice_setup out, so installs still ask you first.

How it works

The server has two tools and two prompts:

What it does
speak_and_listenSpeaks a short message, listens for one conversational turn and returns the transcript.
voice_setupChecks what's installed. After you agree, it installs only what's missing.
setup promptA guided setup: it checks, asks you, installs, then runs a spoken test.
voice_mode promptA hands-free session where Claude checks in by voice at natural points.

Claude is told to write for the ear: short sentences, no markdown, file names instead of paths. Anything that slips through is rewritten before it's spoken. In Claude Code, the plugin keeps a voice conversation in voice until you type. More in Using it.

Troubleshooting

Run npx -y mac-voice-mcp@latest doctor first. It tests setup, the voice and transcription, and your speakers and mic, and tells you which part fails.

SymptomFix
"microphone returned pure digital silence"Allow the mic for the app (Claude, Cursor or your terminal) in System Settings → Privacy & Security → Microphone, then restart it.
It cuts me off while I'm thinkingSet VOICE_MCP_END_SILENCE_MS=2000.
The voice sounds roboticDownload a Premium macOS voice or install Kokoro. See Voices.
It asks for approval every turnSee Allow voice turns without prompts.

More in Troubleshooting.

Documentation

  • Install: every app, the MCP Registry, installing from a clone, upgrading.
  • Voices: macOS Premium voices and the optional Kokoro voice.
  • Using it: voice mode, talking while Claude works, Voice Buddy, several sessions.
  • Configuration: every setting, and the speech models.
  • Troubleshooting: common problems and known limitations.
  • Privacy and security: what stays on your Mac, and how the project is secured.
  • Development: building, testing and releasing.
  • Changelog

🤖 Vibe-coded

This project was designed and written with Claude, in conversation. A human (me) steered it, tested it on a real Mac and checked the test suite, but most of the code was written by AI. Read the Disclaimer before you rely on it.

Disclaimer

mac-voice-mcp is a free, open-source personal project. It's provided as is, with no warranty of any kind, and the authors aren't liable for any damage or loss from using it. See the LICENSE for the exact terms. In plain words:

  • It turns on your microphone whenever an AI assistant calls speak_and_listen, and for the whole of a call, until you hang up. It plays sound through your speakers.
  • Speech recognition makes mistakes. An assistant may act on a misheard word. Check what it heard before you let it do anything you can't undo, like deleting files, pushing code or sending messages.
  • It installs software on your Mac, but only after you agree: Homebrew packages, and kokoro-js with npm if you choose the Kokoro voice. Those are separate projects, under their own licenses (below).
  • There's no guaranteed support. Issues and pull requests are welcome, and fixed on a best-effort basis.

Trademarks. Apple, Mac, macOS and Siri are trademarks of Apple Inc. Claude is a trademark of Anthropic. mac-voice-mcp is an independent project, not affiliated with, sponsored or endorsed by Apple or Anthropic.

Third-party software

mac-voice-mcp doesn't bundle any of these. It uses them when they're on your Mac, and installs them only with your consent. Each one comes under its own license.

SoftwareUsed forLicense
SoXRecording from the mic, Kokoro playbackGPL-2.0
whisper.cppSpeech-to-textMIT
Whisper models (OpenAI)Speech-to-textMIT
macOS voices (say)The built-in voiceApple's macOS license
kokoro-js (optional)The Kokoro voiceApache-2.0
Kokoro-82M model (optional)The Kokoro voiceApache-2.0
espeak-ng (optional, inside kokoro-js)Turning text into sounds for KokoroGPL-3.0
ffmpeg (fallback, never installed by setup)Recording, if SoX is missingLGPL-2.1 / GPL

License

MIT © Jeet

来源:README.md,提交 b604476

工具

5

speak_and_listen

Speak and listen

Say 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.

输入参数listentext_to_speak必填listen_seconds

call

Call

Start or end a call: a hands-free session where the microphone stays open and the user talks whenever they like, like a phone call, until they hang up. action start takes the speaker and microphone, says a short greeting and returns the rules of the call; action end hangs up (also happens when the user says "hang up" or "bye Claude", or after a long silence). During the call, speak with say and hear the user with listen.

输入参数action必填

say

Say (on a call)

During a call: say text out loud and return at once, so you carry on working while it plays. The result includes anything the user said meanwhile. Only during a call: use speak_and_listen otherwise. Write text 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.

输入参数text必填

listen

Listen (on a call)

During a call: return what the user has said since you last heard from them, at once if something is waiting, otherwise wait up to wait_seconds (default and maximum 40) for their next words. "(still on the call, nothing said)" means nobody spoke yet: call listen again to keep waiting, or say something. Once it reports that the call ended, don't call it again.

输入参数wait_seconds

voice_setup

Voice setup

Check 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. bubble=true (also only after the user agrees) builds the floating call bubble on this Mac with swiftc: a small window during calls with mute and hang up. If it reports INSTALLING, the install continues in the background — wait a minute and call it again to check.

输入参数bubblekokoroinstall

版本历史

14
  1. v0.9.0最新Nov 3, 2026
  2. v0.8.1Nov 3, 2026
  3. v0.8.0Oct 31, 2026
  4. v0.7.1Oct 26, 2026
  5. v0.7.0Oct 23, 2026
  6. v0.6.0Oct 13, 2026
  7. v0.5.0Oct 12, 2026
  8. v0.4.2Oct 11, 2026
  9. v0.4.1Oct 10, 2026
  10. v0.4.0Oct 6, 2026
  11. v0.3.1Sep 29, 2026
  12. v0.3.0Sep 28, 2026
  13. v0.1.1Sep 23, 2026
  14. v0.1.0Sep 23, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分