Real-time voice interaction for Claude Code. Speak naturally while Claude works - interrupt, redirect, or provide continuous feedback without stopping.
You can install this plugin from any of these themed marketplaces. Choose one, add it as a marketplace, then install the plugin.
Choose your preferred installation method below
A marketplace is a collection of plugins. Every plugin gets an auto-generated marketplace JSON for individual installation, plus inclusion in category and themed collections. Add a marketplace once (step 1), then install any plugin from it (step 2).
One-time setup for access to all plugins
When to use: If you plan to install multiple plugins now or later
Step 1: Add the marketplace (one-time)
/plugin marketplace add https://claudepluginhub.com/marketplaces/all.json
Run this once to access all plugins
Step 2: Install this plugin
/plugin install mcp-voice-hooks-plugin@all
Use this plugin's auto-generated marketplace JSON for individual installation
When to use: If you only want to try this specific plugin
Step 1: Add this plugin's marketplace
/plugin marketplace add https://claudepluginhub.com/marketplaces/plugins/mcp-voice-hooks-plugin.json
Step 2: Install the plugin
/plugin install mcp-voice-hooks-plugin@mcp-voice-hooks-plugin
Voice Mode for Claude Code allows you to have a continuous two-way conversation with Claude Code, hands-free.
It uses the new Claude Code hooks to deliver voice input to Claude while it works.
This lets you speak continuously to Claude - interrupt, redirect, or provide feedback without stopping what Claude is doing.
Optionally enable text-to-speech to have Claude speak back to you.
Voice recognition and text-to-speech are handled by the browser, so there is nothing to download, and no API keys are needed.
Installation is easy.
npm install -g @anthropic-ai/claude-code
npx mcp-voice-hooks@latest install-hooks
claude mcp add voice-hooks npx mcp-voice-hooks@latest
claude
The browser interface will automatically open after 3 seconds (http://localhost:5111).
Click "Start Listening"
Say something to Claude. You will need to send one message in the Claude Code CLI to start the conversation.
There are two options for voice responses:
Mac has built-in text to speech, but high quality voices are not available by default.
You can download high quality voices from the system voice menu: System Settings > Accessibility > Spoken Content > System Voice
Click the info icon next to the system voice dropdown. Search for "Siri" to find the highest quality voices. You'll have to trigger a download of the voice.
Once it's downloaded, you can select it in the Browser Voice (Local) menu in Chrome.
Test it with the bash command:
say "Hi, this is your Mac system voice"
To use Siri voices with voice-hooks, you need to set your system voice and select "Mac System Voice" in the voice-hooks browser interface.
Other downloaded voices will show up in the voice dropdown in the voice-hooks browser interface so you can select them there directly, instead of using the "Mac System Voice" option.
There is a bug in Safari that prevents browser text-to-speech from loading high-quality voices after browser restart. This is a Safari Web Speech API limitation. To use high-quality voices in Safari you need to set your system voice to Siri and select "Mac System Voice" in the voice-hooks browser interface.
The hooks are automatically installed/updated when the MCP server starts. However, if you need to manually install or reconfigure the hooks:
npx mcp-voice-hooks install-hooks
This will configure your project's .claude/settings.local.json
with the necessary hook commands.
To completely remove MCP Voice Hooks:
# Remove from Claude MCP servers
claude mcp remove voice-hooks
# Also remove hooks and settings
npx mcp-voice-hooks uninstall
This will:
.claude/settings.local.json
If you're developing mcp-voice-hooks itself:
# 1. Clone the repository
git clone https://github.com/johnmatthewtennant/mcp-voice-hooks.git
cd mcp-voice-hooks
# 2. Install dependencies
npm install
# 3. Link the package locally
npm link
# 4. Install hooks (one time)
npx mcp-voice-hooks install-hooks
# 5. Start Claude Code
claude
Important: When developing with npm link
:
dist
folder, not your TypeScript sourcesrc/*.ts
), you must run npm run build
public/*
), just restart Claude CodeThe default port is 5111. To use a different port, add to your project's .claude/settings.local.json
:
{
"env": {
"MCP_VOICE_HOOKS_PORT": "8080"
}
}
When running in MCP-managed mode, the browser will automatically open if no frontend connects within 3 seconds. To disable this behavior:
{
"env": {
"MCP_VOICE_HOOKS_AUTO_OPEN_BROWSER": "false"
}
}
By default, mcp-voice-hooks automatically delivers voice input to Claude after tool use, before speaking, and before stopping:
dequeue_utterances
and wait_for_utterance
MCP tools are hidden from ClaudeTo disable auto-delivery:
{
"env": {
"MCP_VOICE_HOOKS_AUTO_DELIVER_VOICE_INPUT": "false"
}
}
When auto-delivery is disabled:
dequeue_utterances
and wait_for_utterance
tools become visible1.0.33