# Say Mcp Server

> MCP server for macOS text-to-speech functionality

- **Type:** MCP server
- **Install:** `agentstack add mcp-bmorphism-say-mcp-server`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [bmorphism](https://agentstack.voostack.com/s/bmorphism)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [bmorphism](https://github.com/bmorphism)
- **Source:** https://github.com/bmorphism/say-mcp-server

## Install

```sh
agentstack add mcp-bmorphism-say-mcp-server
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

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

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

```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)) - barton@vibes.lol

## License

MIT

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [bmorphism](https://github.com/bmorphism)
- **Source:** [bmorphism/say-mcp-server](https://github.com/bmorphism/say-mcp-server)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-bmorphism-say-mcp-server
- Seller: https://agentstack.voostack.com/s/bmorphism
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
