J

say-mcp-server

...
Created 1/4/2025bybmorphism

Language:

JavaScript

Stars:

12

Forks:

4

say-mcp-server

macOS System Voice Settings

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-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:
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"
  }
});
  1. 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
  }
});
  1. 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
  }
});
  1. 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" }
});
  1. 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

License

MIT

Last updated: 2/12/2025

Publisher info

bmorphism's avatar

Barton Rhodes

"Parametrised optics model cybernetic systems, namely dynamical systems steered by one or more agents. Then ⊛ represents agency being exerted on systems"

@plurigrid
san francisco
183
followers
1,141
following
251
repos

More MCP servers built with JavaScript

mcp-server-semgrep

MCP Server Semgrep is a [Model Context Protocol](https://modelcontextprotocol.io) compliant server that integrates the powerful Semgrep static analysis tool with AI assistants like Anthropic Claude. It enables advanced code analysis, security vulnerability detection, and code quality improvements directly through a conversational interface.

By Szowesgad9
protonmail-mcp

This MCP server provides email sending functionality using Protonmail's SMTP service. It allows both Claude Desktop and Cline VSCode extension to send emails on your behalf using your Protonmail credentials.

By amotivv6
agentql-mcp

Model Context Protocol server that integrates AgentQL's data extraction capabilities.

By tinyfish-io45