MCP Text-to-Speech for Cursor IDE
Add text-to-speech capabilities to Cursor IDE. Let your AI assistant speak responses, summaries, and explanations out loud.
🚀 Quick Start
Prerequisites: Cursor IDE and either an OpenAI API key or an ElevenLabs API key
Setup: Add one of these to your Cursor MCP settings (~/.cursor/mcp.json):
{
"mcpServers": {
"mcp_tts_server": {
"command": "uvx",
"args": ["--from", "mcp-tts", "mcp-tts-server-stdio"],
"env": {
"OPENAI_API_KEY": "your-openai-api-key-here",
"ELEVENLABS_API_KEY": "your-elevenlabs-api-key-here",
"MCP_TTS_PROVIDER": "openai",
"MCP_TTS_VOICE": "ballad",
"MCP_TTS_VOICE_PRESET": "default",
"MCP_TTS_CUSTOM_INSTRUCTIONS": "",
"MCP_TTS_SPEED": "1.0",
"MCP_TTS_VOLUME": "0.8",
"MCP_TTS_DEVICE_NAME": "",
"MCP_TTS_DEVICE_INDEX": "",
"PYTHONIOENCODING": "utf-8"
}
}
}
}
OpenAI (voices/presets/speed apply):
{
"mcpServers": {
"mcp_tts_server": {
"command": "uvx",
"args": ["--from", "mcp-tts", "mcp-tts-server-stdio"],
"env": {
"MCP_TTS_PROVIDER": "openai",
"OPENAI_API_KEY": "sk-...",
"MCP_TTS_VOICE": "alloy",
"MCP_TTS_VOICE_PRESET": "professional",
"MCP_TTS_CUSTOM_INSTRUCTIONS": "",
"MCP_TTS_SPEED": "1.0",
"MCP_TTS_VOLUME": "0.9",
"PYTHONIOENCODING": "utf-8"
}
}
}
}
ElevenLabs (use voice_id or exact name; presets/speed are ignored):
{
"mcpServers": {
"mcp_tts_server": {
"command": "uvx",
"args": ["--from", "mcp-tts", "mcp-tts-server-stdio"],
"env": {
"MCP_TTS_PROVIDER": "elevenlabs",
"ELEVENLABS_API_KEY": "eleven-...",
"MCP_TTS_VOICE": "Adam",
"MCP_TTS_VOLUME": "0.8",
"PYTHONIOENCODING": "utf-8"
}
}
}
}
That's it! Restart Cursor and try asking: "Can you read me a summary using text-to-speech?"
⚙️ Configuration Options
You can control the TTS system using these environment variables in your MCP config:
| Variable | Description | Example Values | Default |
|---|---|---|---|
OPENAI_API_KEY |
Your OpenAI API key (required if using OpenAI) | sk-proj-abc123... |
- |
ELEVENLABS_API_KEY |
Your ElevenLabs API key (required if using ElevenLabs) | eleven-xxx... |
- |
MCP_TTS_PROVIDER |
TTS provider to use | openai, elevenlabs |
openai |
MCP_TTS_VOICE |
Voice selection | OpenAI: alloy, echo, ... • ElevenLabs: voice_id or exact name (case-insensitive) |
ballad |
MCP_TTS_VOICE_PRESET |
Voice style preset | default, professional, calm, nyc_cabbie, chill_surfer, cheerleader, emo_teenager, eternal_optimist, dramatic |
default |
MCP_TTS_CUSTOM_INSTRUCTIONS |
Custom voice instructions (overrides preset) | "Speak like a pirate" |
- |
MCP_TTS_SPEED |
Speech speed | OpenAI: 0.25 to 4.0 • ElevenLabs: ignored |
1.0 |
MCP_TTS_VOLUME |
Playback volume | 0.0 to 1.0 |
0.8 |
MCP_TTS_DEVICE_NAME |
Audio device name (partial match) | "Speakers", "Headphones" |
- |
MCP_TTS_DEVICE_INDEX |
Audio device index | 0, 1, 2, etc. |
- |
Tips:
- Open the local Config page to pick an ElevenLabs voice from your account (with previews), or call their API and paste a
voice_id. - OpenAI accepts built-in voice names and presets; ElevenLabs uses
voice_idor exact voice name. Presets/instructions/speed are ignored by ElevenLabs.
Voice Presets
You can use these built-in voice style presets:
default- Clear, friendly, and conversationalprofessional- Authoritative business voicecalm- Composed, reassuring with quiet authoritynyc_cabbie- Fast-talking New Yorker with edgechill_surfer- Laid-back, mellow, effortlessly coolcheerleader- High-energy, enthusiastic, motivationalemo_teenager- Sarcastic, disinterested, melancholiceternal_optimist- Positive, solution-orienteddramatic- Low, hushed, suspenseful with theatrical flair
🎵 Usage Examples
- "Use text-to-speech to explain this code"
- "Read me the changes you just made"
- "List my audio devices"
- "Switch to a professional voice style"
📚 Full Documentation
For advanced configuration, voice presets, troubleshooting, and development setup, see SETUP_GUIDE.md.
Status: ✅ Working with Cursor IDE • 🎵 7 TTS tools available • 🔊 Cross-platform audio • 🧩 Providers: OpenAI, ElevenLabs
🛠️ Available Tools
This MCP server provides the following tools in Cursor:
- text_to_speech — Convert text to speech and play it through your speakers using the current configuration.
- list_audio_devices — List all available audio output devices on your system.
- test_audio_device — Play a test tone on a selected audio device to verify it works.
- stop_speech — Stop any current speech playback immediately.
- get_tts_status — Show the current TTS server status, provider, volume, and device info.
- get_current_config — Display the current voice, preset, device, and all active TTS settings.
- set_volume — Change the playback volume for speech output.
Metadata
Release files for mcp-tts 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_tts-0.3.0.tar.gz | 40.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_tts-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 78.2 kB
Release files / mcp_tts-0.3.0.tar.gz
| Download URL | mcp_tts-0.3.0.tar.gz |
|---|---|
| Size | 40.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9e290fbb0dd3eae6f114bdc76b9d83fadb5f35e27e0d0bad18e15b93ed27f227
|
|
BLAKE2b-256 checksum How to use checksums |
ead36d4a9bdcaf17aa929e8650c5060b41c7951d351c9eb0c45c6cfebce86dc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.13
|
Release files / mcp_tts-0.3.0-py3-none-any.whl
| Download URL | mcp_tts-0.3.0-py3-none-any.whl |
|---|---|
| Size | 38.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eac677d801a63908fa5c6337e2b721a2805571eeae77912b952ddc939d980b4a
|
|
BLAKE2b-256 checksum How to use checksums |
c0dbb86ab4bf1cf0eb9575464f8469c2ad5b988c7ff2884b8daf4d20baf8b248
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.13
|
Security for mcp-tts 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.