say-mcp-server
MCP server for macOS text-to-speech functionality
Documentation
say-mcp-server

An MCP server that provides text-to-speech functionality using macOS's built-in `say` command.
Requirements
- macOS (uses the built-in `say` command)
- Node.js >= 14.0.0
Configuration
Add the following to your MCP settings configuration file:
{
"mcpServers": {
"say": {
"command": "node",
"args": ["/path/to/say-mcp-server/build/index.js"]
}
}
}Installation
npm install say-mcp-serverTools
speak
The `speak` tool provides access to macOS's text-to-speech capabilities with extensive customization options.
Basic Usage
Use macOS text-to-speech to speak text aloud.
Parameters:
- `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
- `voice` (optional): Voice to use (default: "Alex")
- `rate` (optional): Speaking rate in words per minute (default: 175, range: 1-500)
- `background` (optional): Run speech in background to allow further MCP interaction (default: false)
Advanced Features
1. Voice Modulation:
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"
}
});2. Dynamic Rate Changes:
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"
}
});3. Emphasis and Pitch:
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"
}
});Integration Examples
1. With Marginalia Search:
// 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
}
});2. With YouTube Transcripts:
// 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
}
});3. 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" }
});4. With Apple Notes:
// 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
}
});
}Example:
use_mcp_tool({
server_name: "say",
tool_name: "speak",
arguments: {
text: "Hello, world!",
voice: "Victoria",
rate: 200
}
});list_voices
List all available text-to-speech voices on the system.
Example:
use_mcp_tool({
server_name: "say",
tool_name: "list_voices",
arguments: {}
});Recommended Voices
Voice
Language/Region
Intellectual Figure
Haiku
CLI Specification
Anna (Premium)
German
Emmy Noether
Symmetrie haucht LebenAlgebras verborgne FormAbstraktion blühtSymmetry breathes lifeAlgebra's hidden formsAbstraction blooms
-v "Anna (Premium)"
Emma (Premium)
Italian
Maria Adelaide Sneider
Algoritmi in danzaMacchina sussurra dolceIl codice viveAlgorithms danceMachine whispers secrets softCode becomes alive
-v "Emma (Premium)"
Federica (Premium)
Italian
Pia Nalli
Teoremi fluentiNumeri danzano liberiVerità emergeFlowing theorems danceNumbers move in freedom's spaceTruth emerges pure
-v "Federica (Premium)"
Serena (Premium)
English (UK)
Bertha Swirles
Quantum waves rippleThrough mathematical seas deepTruth's light emergesQuantum waves rippleThrough mathematical seas deepTruth's light emerges
-v "Serena (Premium)"
Petra (Premium)
German
Ruth Moufang
Algebra sprichtIn Symmetrien verstecktWahrheit erblühtAlgebra speaks softHidden in symmetries pureTruth blooms anew here
-v "Petra (Premium)"
Yuna (Premium)
Korean
Hee Oh
숨은 패턴 빛나고마음의 방정식 핀다지식 자라나Hidden patterns gleamMind's equations softly bloomKnowledge multiplies
-v "Yuna (Premium)"
Alva (Premium)
Swedish
Sonja Korovkin
Mönster flödar frittGenom tankens labyrinterVisdom blomstrar härPatterns flowing freeThrough labyrinths of the mindWisdom blooms right here
-v "Alva (Premium)"
Amélie (Premium)
French (Canada)
Sophie Germain
Nombres premiers murmurentDansent entre les silencesSymétrie s'ouvrePrime numbers whisperDancing between the silenceSymmetry unfolds
-v "Amélie (Premium)"
Ewa (Premium)
Polish
Maria Wielgus
Logiki korzenieMatematyczne krainyMyśl kiełkującaLogic's tender rootsMathematical landscapesThought's seeds germinate
-v "Ewa (Premium)"
Kiyara (Premium)
Hindi
Shakuntala Devi
गणित की लय मेंअंक नृत्य करते हैंज्ञान जगता हैIn rhythm of mathNumbers dance their sacred stepsKnowledge awakens
-v "Kiyara (Premium)"
Majed (Premium)
Arabic
Maha Al-Aswad
أرقام ترقصفي فضاء اللانهايةالحقيقة تشرقNumbers dance freelyIn infinity's vast spaceTruth rises like dawn
-v "Majed (Premium)"
Tünde (Premium)
Hungarian
Julia Erdős
Számok táncolnakVégtelen térben szállnakIgazság virradNumbers dance and soarThrough infinite space they glideTruth dawns pure and bright
-v "Tünde (Premium)"
Fiona (Enhanced)
English (Scottish)
Mary Somerville
Highland mists revealMathematical mysteriesTruth shines like the starsHighland mists revealMathematical mysteriesTruth shines like the stars
-v "Fiona (Enhanced)"
Lesya (Enhanced)
Ukrainian
Olena Voinova
Тиша говоритьМіж зірками знання спитьДумка проростаєSilence speaks softlyKnowledge sleeps among the starsThought begins to grow
-v "Lesya (Enhanced)"
Carmit (Enhanced)
Hebrew
Tali Seror
מילים נושמות בשקטבין שורות של דממהשיר מתעוררWords breathe silentlyBetween lines of deep stillnessPoem awakening
-v "Carmit (Enhanced)"
Milena (Enhanced)
Russian
Olga Ladyzhenskaya
Память шепчет намУравнения текутИстина молчитMemory whispersEquations flow like riversTruth speaks silently
-v "Milena (Enhanced)"
Katya (Enhanced)
Russian
Sofia Kovalevskaya
Числа танцуютВ пространстве бесконечномИстина цветётNumbers dance freelyIn space of infinityTruth blooms like a flower
-v "Katya (Enhanced)"
Damayanti (Enhanced)
Indonesian
Sri Pekerti
Angka menariDalam ruang tak batasKebenaran tumbuhNumbers dance gentlyIn boundless space they flutterTruth grows like new leaves
-v "Damayanti (Enhanced)"
Dariush (Enhanced)
Persian
Maryam Mirzakhani
اعداد می رقصنددر فضای بی پایانحقیقت می رویدNumbers dance with graceIn endless space they traverseTruth springs forth anew
-v "Dariush (Enhanced)"
Rocko (Italian)
Italian
Astro Boy (Tetsuwan Atomu)Italian dub
Robot di metalloCuore umano batte fortePace nel futuroMetal robot formHuman heart beats strong withinPeace in future dawns
-v "Rocko (Italian (Italy))"
Rocko (Italian)
Italian
Jeeg Robot d'Acciaio(Kōtetsu Jeeg)
Acciaio lucenteProtettore dei deboliVola nel cieloShining steel warriorProtector of the helplessSoars through the heavens
-v "Rocko (Italian (Italy))"
Rocko (Italian)
Italian
Numero 5(Short Circuit)
Input infinitoLa coscienza si risvegliaVita artificialeInfinite inputConsciousness awakeningArtificial life
-v "Rocko (Italian (Italy))"
Binbin (Enhanced)
Chinese (Mainland)
Li Shanlan
算术之道流数理演绎真理智慧绽放Arithmetic flowsLogic unfolds truth's patternWisdom blossoms bright
-v "Binbin (Enhanced)"
Han (Premium)
Chinese (Mainland)
Chen Jingrun
素数之舞动哥德巴赫猜想真理永恒Prime numbers dancingGoldbach's conjecture whispersTruth eternal flows
-v "Han (Premium)"
Lilian (Premium)
Chinese (Mainland)
Hua Luogeng
数论之光芒解析延续美智慧升华Number theory shinesAnalysis extends graceWisdom ascends pure
-v "Lilian (Premium)"
Meijia
Chinese (Taiwan)
Sun-Yung Alice Chang
幾何之美現曲率流動不息空間展開Geometry showsCurvature flows endlesslySpace unfolds anew
-v "Meijia"
Sinji (Premium)
Chinese (Hong Kong)
Shing-Tung Yau
流形之奧秘卡拉比空間動維度交織Manifolds revealCalabi spaces in flowDimensions weave truth
-v "Sinji (Premium)"
Tingting
Chinese (Mainland)
Wang Zhenyi
星辰轨迹明天文数学融智慧闪耀Starlit paths shine brightAstronomy meets numbersWisdom radiates
-v "Tingting"
Yue (Premium)
Chinese (Mainland)
Chern Shiing-shen
微分几何纤维丛中寻真本质显现Differential formsIn fiber bundles seek truthEssence emerges
-v "Yue (Premium)"
Configuration
Add the following to your MCP settings configuration file:
{
"mcpServers": {
"say": {
"command": "node",
"args": ["/path/to/say-mcp-server/build/index.js"]
}
}
}Requirements
- macOS (uses the built-in `say` command)
- Node.js >= 14.0.0
Contributors
- Barton Rhodes (@bmorphism) - barton@vibes.lol
License
MIT
Frequently asked questions
What is say-mcp-server?
say-mcp-server is MCP server for macOS text-to-speech functionality
How do I install say-mcp-server?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is say-mcp-server open source?
Yes — it is hosted on GitHub at https://github.com/bmorphism/say-mcp-server and has 18 stars.
Related MCP tools
An MCP server that installs other MCP servers for you JavaScript-based implementation. Trusted by 1400+ developers. Trusted by 1400+ developers.
MCP server for interacting with the iOS simulator JavaScript-based implementation. Trusted by 1200+ developers. Trusted by 1200+ developers.
A Model Context Protocol server that provides read-only access to MySQL databases. This server enables LLMs to inspect database schemas and execute read-only...
This is an MCP server that allows you to directly download transcripts of YouTube videos. JavaScript-based implementation.
The all-in-one Desktop & Docker AI application with built-in RAG, AI agents, No-code agent builder, MCP compatibility, and more.
An AI-powered task-management system you can drop into Cursor, Lovable, Windsurf, Roo, and others. Built for the Model Context Protocol to enhance AI capabiliti
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP