Say MCP Server
A text-to-speech server using the macOS `say` command.
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
saycommand) - 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
- 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"
}
});
- 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"
}
});
- 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
- 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
}
});
- 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
}
});
- 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" }
});
- 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
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
saycommand) - Node.js >= 14.0.0
Contributors
- Barton Rhodes (@bmorphism) - barton@vibes.lol
License
MIT
Related Servers
MCP Simple Timeserver
Provides current local time, UTC time, and timezone information.
Coin Flip MCP Server
Generates true random coin flips using the random.org API.
Image Reader
A server for extracting and understanding content from images.
mcp-server-inject-bender
Security through absurdity: transforms SQL injection and XSS attempts into harmless comedy responses using AI-powered humor defense.
Draw-it MCP
An AI-powered drawing application for your browser. Draw, save, and get AI-powered insights.
创思大模型安全 MCP
A content security protection system for large language models, providing real-time risk identification and interception to ensure safe and compliant applications.
Taiwan-Health-MCP
A Model Context Protocol (MCP) server exposing Taiwan healthcare datasets such as ICD-10 and drug information for AI agents.
Currency And Oil
Zenrus MCP Server 是一个提供实时货币汇率和石油价格的服务器,支持多种计算功能,适用于金融分析和自动化工具集成。
Paramus Chemistry INTENT
Makes hundreds of chemical calculations and AI model functions accessible to LLMs
VMS Integration
Connects to a CCTV recording program (VMS) to retrieve recorded and live video streams and control the VMS software.