voice-mcp
Deploys and hosts the MCP server on Cloudflare Workers, using Wrangler, Workers OAuth Provider, and KV for OAuth state.
Provides text-to-speech synthesis through the ElevenLabs API, including voice selection, style handling, and access to ElevenLabs history.
Authenticates users through a GitHub OAuth App, restricting access to protected MCP endpoints to a configured numeric GitHub ID.
Connects the server as a custom MCP App in ChatGPT, exposing the speak tool and an embedded MP3 player for voice output.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@voice-mcpread this in a soft voice: Good morning, everyone."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
chatgpt-voice-mcp
基于 Yinglianchun/voice-mcp(源自 garan0613/voice-mcp)继续开发。保留 speak(text, style?, raw_tags?, scene?)、MCP Apps 内嵌播放器、ElevenLabs history、Cloudflare Workers 路线。原项目的 MIT 授权见 LICENSE。
能做什么
ElevenLabs、Cartesia、Azure Speech、原有 DashScope。按配置优先级路由;失败时尝试下一家。
scene=asmr|conversation|general,style=normal|soft|whisper|teasing|tired|laughing|excited。provider 不支持的风格降级为普通说话。TTS →
audioPostprocessors(目前为空)→ MCP Apps MP3 播放器。没有本地 GPU 或常驻服务。BOT_NAME控制工具和播放器称呼;USER_NAME用于示例台词。两者都从环境变量读取。未设置时分别为Voice和空;示例台词会变成“我在。”。
Related MCP server: mcp-ai-voice
第一次部署清单
在 Windows PowerShell 中操作;命令都在含 package.json 的仓库文件夹里逐条运行。现在无需执行,等注册好账号和 Key 后再做。
注册 Cloudflare,确认 Workers 可用,并在 Cloudflare 控制台记下你的
workers.dev子域。先运行npm ci、npx tsc --noEmit、npx wrangler deploy --dry-run;无类型报错且 dry run 构建成功即可。注册至少一家 TTS(ElevenLabs、Cartesia 或 Azure Speech),取得对应 API key / voice ID / region。供应商额度与计费规则以各自控制台为准。
设置身份变量:示例是
BOT_NAME=陆澈、USER_NAME=小橘;在 Cloudflare Worker 的变量设置中填入自己要用的值,不要写进源码。再按下面的表设置 TTS 优先级。设置 API secrets:运行
npx wrangler login登录;在 Worker 的设置中用 Secrets 保存 TTS key,不要提交.dev.vars或把 key 写在命令行参数里。如果 Cloudflare 要求先有 Worker,先执行一次npx wrangler deploy建立空配置 Worker;默认 OAuth 配置不全时私人端点会拒绝请求。配置 OAuth:在 GitHub 创建一个 OAuth App,回调地址填
https://你的-worker.你的子域.workers.dev/callback。在 Worker 中设置AUTH_MODE=oauth、AUTH_BASE_URL=https://你的-worker.你的子域.workers.dev、AUTH_ALLOWED_GITHUB_ID=你的数字 GitHub ID、GITHUB_OAUTH_CLIENT_ID,并把GITHUB_OAUTH_CLIENT_SECRET存为 Secret。GitHub 数字 ID 可打开https://api.github.com/users/你的GitHub用户名查看id字段。GitHub OAuth App 不用申请额外数据 scopes;这里只查询登录者的 GitHub 数字 ID。OAUTH_KV由 Wrangler 配置绑定,用于 OAuth client、授权和 token 状态。Worker 地址与 OAuth App 回调地址必须完全一致。不需要把 TTS key 或 OAuth secret 交给 ChatGPT。部署:运行
npx wrangler deploy。Wrangler 会根据wrangler.jsonc为OAUTH_KV创建或绑定 KV namespace;部署后先访问/status(只显示ok),再确认不带 Bearer token 访问/mcp、/speak、/history、/events/latest会收到401。首次部署前可在 Cloudflare 控制台核对 Worker 名称与 KV 资源。接入 ChatGPT:在支持自定义 MCP App 的 ChatGPT 网页端打开 Settings / Workspace settings → Apps → Create,填
https://你的-worker.你的子域.workers.dev/mcp。按 OAuth 登录提示登录 GitHub 并同意授权,Scan Tools 后确认看到speak。试一句:让 ChatGPT 调用
speak读“小橘,我在。”。成功时工具返回内嵌播放器,手动点击播放。如果登录、Scan Tools 或播放器失败,保留错误文字与发生在哪一步,隐藏所有 key/token 后再排查。
Cloudflare 的 Workers OAuth Provider 负责 MCP OAuth 2.1、PKCE、Client ID Metadata Documents / 动态客户端注册、token 校验;GitHub OAuth App 只负责确认登录者是你设置的数字 ID。ChatGPT 会在 MCP 请求中使用 Authorization: Bearer;自定义 API key header 和把 key 塞进 URL 都不是这里的认证方案。Cloudflare Access 可以作为上游身份系统集成,但仅在 Worker 前加 Access 登录页不能替代 MCP OAuth 发现与 Bearer token 流程。依据:OpenAI MCP 认证、Cloudflare MCP 认证、GitHub OAuth App。Cloudflare Workers 与 KV 有免费额度,超过免费额度和 TTS 厂商费用需在部署前自行核对;本仓库未创建付费资源。
配置
.env.example 是变量名和示例值清单。Cloudflare 的普通变量可在 Worker 设置中添加;密钥使用 Secrets。本地短期试验可复制为未跟踪的 .dev.vars,把 AUTH_MODE 临时改为 none 后运行 npm run dev。none 会公开 /mcp 等私人端点,不要带着它长期部署。默认 AUTH_MODE=oauth,OAuth 变量不全时私人端点拒绝请求。
变量 | 作用 / 示例 |
| 播放器身份、测试台词;例如 |
| 默认顺序: |
| 例如 |
| 例如 |
| 例如 |
|
|
| Worker 的 HTTPS origin,无路径和尾部 |
| 唯一允许授权的 GitHub 数字账号 ID |
| GitHub OAuth App 凭据;Secret 只放 Cloudflare Secrets |
ElevenLabs 用 ELEVENLABS_API_KEY、ELEVENLABS_VOICE_ID;Cartesia 用 CARTESIA_API_KEY、CARTESIA_VOICE_ID;Azure 用 AZURE_SPEECH_KEY、AZURE_SPEECH_REGION,可选 AZURE_VOICE_ZH/EN。语种 voice 和模型变量见 .env.example。旧 TTS_PROVIDER=dashscope、DASHSCOPE_API_KEY、VOICE_ID 仍可用。播放器需要 MP3。具体 API 行为见 Cartesia Bytes、Azure REST TTS。
端点与限制
/mcp:MCP;/speak:直出 MP3;/panel:原有可视化页面;/history:ElevenLabs 历史记录;/events/latest:最近一次语音。这些在 OAuth 模式下都要求有效 Bearer token 和voice:speakscope。/status:公开、最小健康检查,只返回服务状态,不暴露 provider、voice ID 或 key。OAuth 模式的直出接口只接受
POST /speak,JSON 如{ "text": "Hello", "style": "soft" };本地none模式仍兼容GET /speak。独立浏览器
/panel在 OAuth 模式下无法靠地址栏直接打开并交互:地址栏不会附带 ChatGPT 的 Bearer token。页面及其私人数据接口已受保护。ChatGPT 内嵌的 MCP Apps 播放器仍直接读取本次工具结果中的音频,不依赖/panel。若要长期使用独立面板,需要另做浏览器会话登录。最近一次语音缓存不按用户隔离,可能在不同 Cloudflare 边缘节点上不一致。它只有一个 GitHub ID 可授权,但同一人授权的多个 OAuth client 都能读取它。
代码已有 OAuth 元数据和入口
401challenge;当前固定的 MCP SDK 版本尚未输出 OpenAI 新文档建议的逐工具securitySchemes。因此 ChatGPT 的连接/授权 UI 和 MCP Apps 播放器必须在真实账号部署后实测,不能把本地 dry run 当作端到端兼容证明。OpenAI 说明还要求逐工具认证标记以触发工具级登录。ChatGPT 开发者模式支持范围会变;官方目前说明完整 MCP 与 Apps UI 以网页端特定工作区为主,手机 App 不保证支持。不要把移动端播放视为已验证功能。
音频正文会发送给选中的 TTS 厂商。src/postprocessors/index.ts 只保留后处理入口,当前没有 binaural 依赖。
This server cannot be deployed
Maintenance
Related MCP Connectors
Text to speech for your AI. Your AI can send text to Doc Player to read it aloud. You will see a reader window with the text and you can control the playback sentence by sentence. Find an example here: https://documentplayer.com/connect-ai/
Audio for your agent: transcribe, speak, translate, summarise, plus sound effects and music.
Carbon Voice MCP serves as a bridge that connects AI assistants like ChatGPT, Claude, and Cursor to a user's Carbon Voice account, turning voice messages and conversations into a private, on-demand knowledge base. It provides 28 specialized tools for comprehensive voice messaging management, including creating and sending messages, accessing conversation history with instant transcription, running AI actions (summarization, TLDR generation, meeting notes), and managing workspace collaboration through folders, contacts, and team communications.
Speech, transcription, voice agents, Trace, Recap, dubbing and narration with browser OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to generate and play high-quality text-to-speech audio using the Kokoro model, with support for multiple voices, adjustable speaking speed, and audio caching.-
- AlicenseAqualityDmaintenanceEnables AI agents to synthesize natural speech using either platform system voices or premium OpenAI TTS, with automatic engine selection and graceful fallback.18 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to generate speech with custom cloned voices via DashScope or ElevenLabs, with an inline audio player and visualizer panel.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to speak aloud by generating and playing audio through the system output. Supports multiple TTS providers, playback queue management, and configurable voice profiles.8 npm1MIT