macOS Say
About
Leverages macOS 'say' command for customizable text-to-speech functionality, enabling dynamic voice output.
Details
- Author
- bmorphism
- Repository
- bmorphism/say-mcp-server
- GitHub stars
- 18
- Downloads
- 349
- License
- MIT License
- Categories
- Other, Productivity, Developer Tools, Design, Media, Search, Infrastructure, Frontend, AI
- Tags
- #mobile
Jump to
- Uses macOS’s built-in say command for text-to-speech
- Supports voice selection, speaking rate, and volume control
- Allows speech to run in the background
- Includes advanced tags for pitch, emphasis, and silence insertion
- Lists all available system voices with one command
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
macOS SayCommand (node, npx, python, etc.)nodeArguments-
Argument 1
/path/to/say-mcp-server/build/index.js
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
npm install say-mcp-server
Use macOS text-to-speech to speak text aloud.
speak
Use macOS text-to-speech to speak text aloud. Parameters: text (required), voice (optional), rate (optional), background (optional)
list_voices
List all available text-to-speech voices on the system. Parameters: none
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"macos say": {
"env": {},
"args": [
"/path/to/say-mcp-server/build/index.js"
],
"shell": false,
"command": "node"
}
}
}
Linux
{
"env": [],
"args": [
"/path/to/say-mcp-server/build/index.js"
],
"shell": false,
"command": "node"
}
Macos
{
"env": [],
"args": [
"/path/to/say-mcp-server/build/index.js"
],
"shell": false,
"command": "node"
}
Windows
{
"env": [],
"args": [
"/path/to/say-mcp-server/build/index.js"
],
"shell": false,
"command": "node"
}
An MCP server that provides text-to-speech functionality using macOS's built-insaycommand.
- macOS (uses the built-insaycommand)
- Node.js >= 14.0.0
Add the following to your MCP settings configuration file:
{ "mcpServers": { "say": { "command": "node", "args": ["/path/to/say-mcp-server/build/index.js"] } } }
Thespeaktool provides access to macOS's text-to-speech capabilities with extensive customization options.
Use macOS text-to-speech to speak text aloud.
- text(required): Text to speak. Supports:
- Plain text
- Basic punctuation for pauses
- Newlines for natural breaks
- [[slnc 500]] for 500ms silence
- [[rate 200]] for changing speed mid-text
- [[volm 0.5]] for changing volume mid-text
- [[emph +]] and [[emph -]] for emphasis
- [[pbas +10]] for pitch adjustment
use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "[[volm 0.7]] This is quieter [[volm 1.0]] and this is normal [[volm 1.5]] and this is louder", voice: "Victoria" } });
use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "Normal speed [[rate 300]] now speaking faster [[rate 100]] and now slower", voice: "Fred" } });
use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "[[emph +]] Important point! [[emph -]] [[pbas +10]] Higher pitch [[pbas -10]] Lower pitch", voice: "Samantha" } });
// Search for a topic and have the results read aloud const searchResult = await use_mcp_tool({ server_name: "marginalia-mcp-server", tool_name: "search", arguments: { query: "quantum computing basics", count: 1 } }); await use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: searchResult.results[0].description, voice: "Daniel", rate: 150 } });
// Read a YouTube video transcript const transcript = await use_mcp_tool({ server_name: "youtube-transcript", tool_name: "get_transcript", arguments: { url: "https://youtube.com/watch?v=example", lang: "en" } }); await use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: transcript.text, voice: "Samantha", rate: 175 } });
- Background Speech with Multiple Actions:
// Start long speech in background await use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "This is a long speech that will run in the background...", voice: "Rocko (Italian (Italy))", rate: 69, background: true } }); // Immediately perform another action while speech continues await use_mcp_tool({ server_name: "marginalia-mcp-server", tool_name: "search", arguments: { query: "parallel processing" } });
// Read notes aloud const notes = await use_mcp_tool({ server_name: "apple-notes-mcp", tool_name: "search-notes", arguments: { query: "meeting notes" } }); if (notes.length > 0) { await use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: notes[0].content, voice: "Karen", rate: 160 } }); }
use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "Hello, world!", voice: "Victoria", rate: 200 } });
List all available text-to-speech voices on the system.
use_mcp_tool({ server_name: "say", tool_name: "list_voices", arguments: {} });
Add the following to your MCP settings configuration file:
{ "mcpServers": { "say": { "command": "node", "args": ["/path/to/say-mcp-server/build/index.js"] } } }
- macOS (uses the built-insaycommand)
- Node.js >= 14.0.0
- Barton Rhodes (@bmorphism) -barton@vibes.lol
Local-first voice toolkit: STT (25 langs, ~19x faster than Whisper on Apple Silicon via CoreML, ONNX fallback), TTS (Kokoro + Vosk-TTS + 180 macOS voices, SSML), VAD, language detection (107 langs). Rust engine, OpenClaw skill. No cloud, no API keys.
Local, on-device TTS for Claude & Cursor. No API key, no cloud. 10 voices, 31 languages, ~820ms on Apple Silicon.
Reads text aloud locally on Windows, macOS, and Linux using the operating system's built-in speech engine. No API key, no account, no special hardware required, and no cloud service — text never leaves the machine.
A text-to-speech (TTS) server using the VOICEVOX engine. Requires a running VOICEVOX instance and is currently macOS only.
Hosted MCP server for AudioPod's audio AI: text-to-speech, voice cloning, music generation, stem and speaker separation, transcription, denoise, and voice conversion.
Hosted text-to-speech MCP server with 54 neural voices in 9 languages, including Brazilian Portuguese, using API-key authentication and pay-per-use billing.
AI-powered text-to-speech MCP server with instant voice cloning. Generate speech from Claude Desktop, Claude Code, or n8n using 5 built-in voices (English, German, French, Spanish) or clone any voice from a short audio sample. Runs fully local, no API keys, no cloud. Supports stdio, SSE, and HTTP transports.
AI transcription from URLs or local files: 119 languages, speaker diarization, word-level timestamps, SRT/VTT/text export.
Production speech AI MCP server with pronunciation scoring, speech-to-text, and text-to-speech — 10 tools, 7 resources, 3 prompts.
A Model Context Protocol server that exposes the canonical WordCast knowledge surface — voice and TTS workflows, blog topics, FAQ, official links — to MCP-compatible AI clients such as Claude Desktop, Cursor, Windsurf, and Continue. Read-only, no API keys, no quota, ~50 ms cold start.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





