Skip to main content
Glama

🎙️ voice-mcp

An MCP (Model Context Protocol) server for AI voice synthesis with an inline audio player. Give your AI assistant a custom cloned voice!

License

Features

  • 🎤 Custom Voice — Use ElevenLabs with a selected or cloned voice

  • 🎵 Inline Audio Player — Beautiful WeChat-style player with waveform visualization

  • 📝 Transcript Toggle — Show/hide the spoken text

  • 🌙 Dark Mode Support — Automatic theme adaptation

  • Cloudflare Workers — Fast, serverless deployment

Related MCP server: ElevenLabs MCP Server

Demo

When you call the speak tool, you get:

  • A sleek audio player with play/pause button

  • Animated waveform that follows playback progress

  • Duration display

  • Expandable transcript

Quick Start

1. Clone the repository

git clone https://github.com/p8j9k7psbk-hub/voice-mcp.git
cd voice-mcp

2. Install dependencies

npm install

3. Configure ElevenLabs

Create an ElevenLabs API key and copy the ID of the voice you want to use.

Add your secrets to Cloudflare:

npx wrangler secret put ELEVENLABS_API_KEY
npx wrangler secret put ELEVENLABS_VOICE_ID
npx wrangler secret put ELEVENLABS_MODEL_ID  # Optional; defaults to eleven_multilingual_v2
npx wrangler secret put BOT_NAME  # Optional, defaults to "AI"

4. Deploy

npx wrangler deploy

5. Connect to ChatGPT

  1. Enable Developer mode in ChatGPT, then choose Create app from the plus menu.

  2. Add the public MCP URL: https://your-worker.workers.dev/mcp.

  3. Select the app in a chat. ChatGPT can then call the speak tool and display the inline player.

The endpoint must be reachable over HTTPS. ChatGPT supports remote MCP servers using SSE or streaming HTTP; this Worker uses the latter.

Configuration

Variable

Required

Description

ELEVENLABS_API_KEY

Your ElevenLabs API key

ELEVENLABS_VOICE_ID

ElevenLabs voice ID

ELEVENLABS_MODEL_ID

Defaults to eleven_multilingual_v2

BOT_NAME

Display name (default: "AI")

API Endpoints

Endpoint

Description

GET /mcp

MCP server (streaming HTTP)

GET /sse

MCP server (SSE compatibility endpoint)

GET /speak?text=Hello

Direct audio file

GET /status

Health check

How to choose a voice

  1. Open the ElevenLabs Voice Library.

  2. Select a built-in or cloned voice.

  3. Copy its voice ID into ELEVENLABS_VOICE_ID.

Custom Deployment

Using a Custom Domain

  1. Add your domain to Cloudflare

  2. Create a DNS record pointing to your Worker

  3. Update wrangler.jsonc:

{
  "routes": [
    { "pattern": "voice.yourdomain.com/*", "zone_name": "yourdomain.com" }
  ]
}

Self-Hosting (Node.js)

The core MCP logic can be adapted for other platforms. You'll need to:

  1. Replace createMcpHandler with a standard HTTP/SSE handler

  2. Use @modelcontextprotocol/sdk directly

  3. Handle the SSE transport yourself

Tech Stack

License

MIT © 2026

Credits

Inspired by the need to give AI assistants a voice. Built with ❤️

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Voice and chat for AI agents — Discord, Teams, Meet, Slack, Zoom, Telegram, WhatsApp, NC Talk, SIP

  • List, configure, chat with, analyse and embed your Echo AI assistants.

  • AI-manageable audio CDN: upload, transcode, normalize, stream & deliver audio, plus grounded docs.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/veratilier/voice-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server