https://github.com/bmorphism/say-mcp-server
MCP server for macOS text-to-speech functionality
https://github.com/bmorphism/say-mcp-server
Last synced: about 2 months ago
JSON representation
MCP server for macOS text-to-speech functionality
- Host: GitHub
- URL: https://github.com/bmorphism/say-mcp-server
- Owner: bmorphism
- License: mit
- Created: 2025-01-04T07:44:40.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-01-07T03:15:18.000Z (5 months ago)
- Last Synced: 2025-04-23T06:14:32.168Z (about 2 months ago)
- Language: JavaScript
- Size: 496 KB
- Stars: 12
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- mcp-index - Say Server - Provides text-to-speech functionality using macOS's built-in `say` command, allowing the generation of spoken output from text input. (Speech Recognition and Synthesis)
README

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:
```json
{
"mcpServers": {
"say": {
"command": "node",
"args": ["/path/to/say-mcp-server/build/index.js"]
}
}
}
```## Installation
```bash
npm install say-mcp-server
```## Tools
### 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:
```typescript
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:
```typescript
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:
```typescript
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:
```typescript
// 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:
```typescript
// 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:
```typescript
// 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:
```typescript
// 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:
```typescript
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:
```typescript
use_mcp_tool({
server_name: "say",
tool_name: "list_voices",
arguments: {}
});
```## Recommended Voices
Voice
Language/Region
Intellectual Figure
Haiku
CLI SpecificationAnna (Premium)
German
Emmy Noether
Symmetrie haucht Leben
Algebras verborgne Form
Abstraktion blüht
Symmetry breathes life
Algebra's hidden forms
Abstraction blooms-v "Anna (Premium)"
Emma (Premium)
Italian
Maria Adelaide Sneider
Algoritmi in danza
Macchina sussurra dolce
Il codice vive
Algorithms dance
Machine whispers secrets soft
Code becomes alive-v "Emma (Premium)"
Federica (Premium)
Italian
Pia Nalli
Teoremi fluenti
Numeri danzano liberi
Verità emerge
Flowing theorems dance
Numbers move in freedom's space
Truth emerges pure-v "Federica (Premium)"
Serena (Premium)
English (UK)
Bertha Swirles
Quantum waves ripple
Through mathematical seas deep
Truth's light emerges
Quantum waves ripple
Through mathematical seas deep
Truth's light emerges-v "Serena (Premium)"
Petra (Premium)
German
Ruth Moufang
Algebra spricht
In Symmetrien versteckt
Wahrheit erblüht
Algebra speaks soft
Hidden in symmetries pure
Truth blooms anew here-v "Petra (Premium)"
Yuna (Premium)
Korean
Hee Oh
숨은 패턴 빛나고
마음의 방정식 핀다
지식 자라나
Hidden patterns gleam
Mind's equations softly bloom
Knowledge multiplies-v "Yuna (Premium)"
Alva (Premium)
Swedish
Sonja Korovkin
Mönster flödar fritt
Genom tankens labyrinter
Visdom blomstrar här
Patterns flowing free
Through labyrinths of the mind
Wisdom blooms right here-v "Alva (Premium)"
Amélie (Premium)
French (Canada)
Sophie Germain
Nombres premiers murmurent
Dansent entre les silences
Symétrie s'ouvre
Prime numbers whisper
Dancing between the silence
Symmetry unfolds-v "Amélie (Premium)"
Ewa (Premium)
Polish
Maria Wielgus
Logiki korzenie
Matematyczne krainy
Myśl kiełkująca
Logic's tender roots
Mathematical landscapes
Thought's seeds germinate-v "Ewa (Premium)"
Kiyara (Premium)
Hindi
Shakuntala Devi
गणित की लय में
अंक नृत्य करते हैं
ज्ञान जगता है
In rhythm of math
Numbers dance their sacred steps
Knowledge awakens-v "Kiyara (Premium)"
Majed (Premium)
Arabic
Maha Al-Aswad
أرقام ترقص
في فضاء اللانهاية
الحقيقة تشرق
Numbers dance freely
In infinity's vast space
Truth rises like dawn-v "Majed (Premium)"
Tünde (Premium)
Hungarian
Julia Erdős
Számok táncolnak
Végtelen térben szállnak
Igazság virrad
Numbers dance and soar
Through infinite space they glide
Truth dawns pure and bright-v "Tünde (Premium)"
Fiona (Enhanced)
English (Scottish)
Mary Somerville
Highland mists reveal
Mathematical mysteries
Truth shines like the stars
Highland mists reveal
Mathematical mysteries
Truth shines like the stars-v "Fiona (Enhanced)"
Lesya (Enhanced)
Ukrainian
Olena Voinova
Тиша говорить
Між зірками знання спить
Думка проростає
Silence speaks softly
Knowledge sleeps among the stars
Thought begins to grow-v "Lesya (Enhanced)"
Carmit (Enhanced)
Hebrew
Tali Seror
מילים נושמות בשקט
בין שורות של דממה
שיר מתעורר
Words breathe silently
Between lines of deep stillness
Poem awakening-v "Carmit (Enhanced)"
Milena (Enhanced)
Russian
Olga Ladyzhenskaya
Память шепчет нам
Уравнения текут
Истина молчит
Memory whispers
Equations flow like rivers
Truth speaks silently-v "Milena (Enhanced)"
Katya (Enhanced)
Russian
Sofia Kovalevskaya
Числа танцуют
В пространстве бесконечном
Истина цветёт
Numbers dance freely
In space of infinity
Truth blooms like a flower-v "Katya (Enhanced)"
Damayanti (Enhanced)
Indonesian
Sri Pekerti
Angka menari
Dalam ruang tak batas
Kebenaran tumbuh
Numbers dance gently
In boundless space they flutter
Truth grows like new leaves-v "Damayanti (Enhanced)"
Dariush (Enhanced)
Persian
Maryam Mirzakhani
اعداد می رقصند
در فضای بی پایان
حقیقت می روید
Numbers dance with grace
In endless space they traverse
Truth springs forth anew-v "Dariush (Enhanced)"
Rocko (Italian)
Italian
Astro Boy (Tetsuwan Atomu)
Italian dub
Robot di metallo
Cuore umano batte forte
Pace nel futuro
Metal robot form
Human heart beats strong within
Peace in future dawns-v "Rocko (Italian (Italy))"
Rocko (Italian)
Italian
Jeeg Robot d'Acciaio
(Kōtetsu Jeeg)
Acciaio lucente
Protettore dei deboli
Vola nel cielo
Shining steel warrior
Protector of the helpless
Soars through the heavens-v "Rocko (Italian (Italy))"
Rocko (Italian)
Italian
Numero 5
(Short Circuit)
Input infinito
La coscienza si risveglia
Vita artificiale
Infinite input
Consciousness awakening
Artificial life-v "Rocko (Italian (Italy))"
Binbin (Enhanced)
Chinese (Mainland)
Li Shanlan
算术之道流
数理演绎真理
智慧绽放
Arithmetic flows
Logic unfolds truth's pattern
Wisdom blossoms bright-v "Binbin (Enhanced)"
Han (Premium)
Chinese (Mainland)
Chen Jingrun
素数之舞动
哥德巴赫猜想
真理永恒
Prime numbers dancing
Goldbach's conjecture whispers
Truth eternal flows-v "Han (Premium)"
Lilian (Premium)
Chinese (Mainland)
Hua Luogeng
数论之光芒
解析延续美
智慧升华
Number theory shines
Analysis extends grace
Wisdom ascends pure-v "Lilian (Premium)"
Meijia
Chinese (Taiwan)
Sun-Yung Alice Chang
幾何之美現
曲率流動不息
空間展開
Geometry shows
Curvature flows endlessly
Space unfolds anew-v "Meijia"
Sinji (Premium)
Chinese (Hong Kong)
Shing-Tung Yau
流形之奧秘
卡拉比空間動
維度交織
Manifolds reveal
Calabi spaces in flow
Dimensions weave truth-v "Sinji (Premium)"
Tingting
Chinese (Mainland)
Wang Zhenyi
星辰轨迹明
天文数学融
智慧闪耀
Starlit paths shine bright
Astronomy meets numbers
Wisdom radiates-v "Tingting"
Yue (Premium)
Chinese (Mainland)
Chern Shiing-shen
微分几何
纤维丛中寻真
本质显现
Differential forms
In fiber bundles seek truth
Essence emerges-v "Yue (Premium)"
## Configuration
Add the following to your MCP settings configuration file:
```json
{
"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](https://github.com/bmorphism)) - [email protected]
## License
MIT