mcp-say
by blacktop
mcp-say is a TTS (text-to-speech) MCP Server that adds Text-to-Speech functionality to applications like Claude Desktop and Cursor IDE. It registers two tools: `say` (using macOS's built-in `say` command) and `elevenlabs` (using the ElevenLabs API).
View on GitHub
Last updated: N/A
<p align="center">
<a href="https://github.com/blacktop/mcp-say"><img alt="mcp-say Logo" src="https://raw.githubusercontent.com/blacktop/mcp-say/main/docs/logo.webp" height="200" /></a>
<h1 align="center">mcp-say</h1>
<h4><p align="center">TTS (text-to-speech) MCP Server</p></h4>
<p align="center">
<a href="https://github.com/blacktop/mcp-say/actions" alt="Actions">
<img src="https://github.com/blacktop/mcp-say/actions/workflows/go.yml/badge.svg" /></a>
<a href="https://github.com/blacktop/mcp-say/releases/latest" alt="Downloads">
<img src="https://img.shields.io/github/downloads/blacktop/mcp-say/total.svg" /></a>
<a href="https://github.com/blacktop/mcp-say/releases" alt="GitHub Release">
<img src="https://img.shields.io/github/release/blacktop/mcp-say.svg" /></a>
<a href="http://doge.mit-license.org" alt="LICENSE">
<img src="https://img.shields.io/:license-mit-blue.svg" /></a>
</p>
<br>
What? 🤔
Adds Text-to-Speech to things like Claude Desktop and Cursor IDE.
It registers two tools:
say
elevenlabs
say
Uses the macOS say
binary to speak the text
elevenlabs
Uses the elevenlabs text-to-speech API to speak the text
Getting Started
Install
go install github.com/blacktop/mcp-say@latest
❱ mcp-say --help
TTS (text-to-speech) MCP Server.
Provides a text-to-speech service using the MacOS 'say' command.
Designed to be used with the MCP protocol.
Usage:
mcp-say [flags]
Flags:
-h, --help help for mcp-say
-v, --verbose Enable verbose debug logging
Set Claude Desktop Config
{
"mcpServers": {
"say": {
"command": "mcp-say",
"env": {
"ELEVENLABS_API_KEY": "********"
}
}
}
}
Test
❱ cat test/say.json | go run main.go --verbose
2025/03/23 22:41:49 INFO Starting MCP server name="Say TTS Service" version=1.0.0
2025/03/23 22:41:49 DEBU Say tool called request="{Request:{Method:tools/call Params:{Meta:<nil>}} Params:{Name:say Arguments:map[text:Hello, world!] Meta:<nil>}}"
2025/03/23 22:41:49 DEBU Executing say command args="[--rate 200 Hello, world!]"
2025/03/23 22:41:49 INFO Speaking text text="Hello, world!"
{"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"Speaking: Hello, world!"}]}}
License
MIT Copyright (c) 2025 blacktop