Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VOICE_MCP_RATENoWords per minute, e.g. 200.system rate
VOICE_MCP_CHIMENoSet to 0 to turn off the mic open/close sounds.1
VOICE_MCP_DEBUGNoVerbose logs with per-turn timings, written to stderr.0
VOICE_MCP_VOICENomacOS voice, e.g. Samantha, Daniel, Kanya. List them with `say -v '?'`.system voice
VOICE_MCP_THREADSNoNumber of whisper.cpp threads.min(8, cores)
VOICE_MCP_LANGUAGENoen, th, ja, de, …en for *.en models, otherwise auto
VOICE_MCP_RECORDERNosox or ffmpeg (ffmpeg is macOS only).auto
VOICE_MCP_CACHE_DIRNoWhere models are downloaded or symlinked.~/.cache/mac-voice-mcp
VOICE_MCP_MIN_SPEECH_DBNoThe quietest level that ever counts as speech (dBFS).-48
VOICE_MCP_WHISPER_MODELNoWhich model to use (see the table below).base.en
VOICE_MCP_END_SILENCE_MSNoHow long a pause ends your turn. Use 1800 if it cuts you off while you think, 800 for snappier replies.1200
VOICE_MCP_WHISPER_PROMPTNoWords to bias toward: names, product terms, jargon.
VOICE_MCP_WHISPER_SERVERNoSet to 0 to always use whisper-cli, with no warm server.1
VOICE_MCP_MAX_SPEAK_WORDSNoLonger text is cut at a sentence boundary ("the rest is on screen").120
VOICE_MCP_SPEECH_MARGIN_DBNoHow much louder than room noise counts as speech. Raise it in noisy rooms.12
VOICE_MCP_MODEL_SEARCH_PATHSNoExtra folders to check for an existing model (`:`-separated).
VOICE_MCP_WHISPER_MODEL_PATHNoUse this exact ggml-*.bin file.
VOICE_MCP_SERVER_IDLE_MINUTESNoHow long the warm server stays up without use.15
VOICE_MCP_START_TIMEOUT_SECONDSNoHow long to wait for you to start talking.8

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}
prompts
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
speak_and_listenA

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.

callA

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.

sayA

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.

listenA

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.

voice_setupA

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.

Prompts

Interactive templates invoked by user choice

NameDescription
setupCheck what voice-mcp needs, install what's missing (with your OK), then test it.
callA call: the microphone stays open and you talk whenever you like, until you hang up.
voice_modeHands-free session: Claude checks in out loud via speak_and_listen, using speakable phrasing.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.3/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a distinct role: call manages the session, listen and say operate during a call, speak_and_listen handles a standalone spoken turn, and voice_setup handles installation. The main possible confusion is between say and speak_and_listen because both produce speech, but the descriptions clarify that say is call-only while speak_and_listen is for non-call use.

Naming Consistency3/5

The names are all lowercase and readable, but they mix conventions: bare verbs (call, listen, say), a noun-like setup name (voice_setup), and a compound verb phrase (speak_and_listen). There is no single predictable verb_noun or action pattern, though the set is small enough that the inconsistency does not make it chaotic.

Tool Count5/5

Five tools is well-scoped for a voice interaction server. Each tool has a clear role: setup, call lifecycle, in-call speaking/listening, and standalone speak-and-listen. No tool appears redundant or unnecessary.

Completeness4/5

The surface covers the core voice workflow: checking/installing dependencies, starting and ending calls, speaking, listening, and standalone spoken turns. Minor gaps exist around interrupting speech, muting during a call, or inspecting voice/session status, but these are not fatal for the stated purpose.

Maintenance

ActivityActive
ResponsivenessUnresponsive