osx-tts-mcp/README.md
Claude aeed428b3a feat: osx-tts-mcp — local macOS say TTS plugin
Standalone MCP server for local text-to-speech via the built-in macOS `say`
command. Companion to @lilith/speech-synthesis-mcp (remote Chatterbox/GPU TTS):
no GPU or network required, always available on the Mac.

Tools: synthesize (text/personality/voice/rate), list_voices, list_personalities,
health_check. Voice/rate configurable via OSX_TTS_VOICE/_RATE; personalities file
and remote playback proxy (OSX_TTS_PLAYBACK_HOST) supported.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 07:39:03 -04:00

1.5 KiB

@lilith/osx-tts-mcp

MCP server for local text-to-speech on macOS via the built-in say command. No GPU, no network — speech is synthesized and played on the machine running the server. Companion to @lilith/speech-synthesis-mcp (remote Chatterbox/GPU TTS): use this one when you want local, always-available spoken output.

Tools

  • synthesize — speak text aloud. Args: text (required), personality, voice (overrides personality voice), rate (wpm, overrides personality rate). Fire-and-forget; inline tags like [laugh] are stripped.
  • list_voices — installed macOS voices (say -v '?'), optional locale filter.
  • list_personalities — named voice + rate presets.
  • health_check — engine availability, default voice, installed-voice count.

Configuration (env)

Var Default Purpose
OSX_TTS_VOICE Zoe (Premium) Default voice (name from list_voices)
OSX_TTS_RATE (voice default) Default speaking rate, words/min
OSX_SAY_BIN /usr/bin/say Override the say binary path
OSX_TTS_PERSONALITIES_FILE ~/.claude/osx-speech-personalities.json Custom personalities
OSX_TTS_PLAYBACK_HOST (unset) SSH target to stream audio to a remote listener
AUDIO_PLAYER afplay (macOS) Local player

Example ~/.mcp.json entry

"osx-tts": {
  "command": "/opt/homebrew/bin/node",
  "args": ["/Users/natalie/Code/@packages/osx-tts-mcp/dist/index.js"],
  "env": { "OSX_TTS_VOICE": "Zoe (Premium)" }
}

Build

pnpm install && pnpm build