macOS Say

by bmorphism

18 stars
349 downloads
Not rated
GitHub

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

- 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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name macOS Say
    Command (node, npx, python, etc.) node
    Arguments
    • 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.

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.