MCP Voice Soundboard

MCP Voice Soundboard

A text-to-speech MCP server with 48 voices across 9 languages, supporting emotion spans, SFX tags, and multi-speaker dialogue. Deployable via a single npx command with built-in guardrails and swappable backends.

Category
访问服务器

README

<p align="center"> <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a> </p>

<p align="center"> <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/mcp-voice-soundboard/readme.png" alt="MCP Voice Soundboard" width="400"> </p>

<p align="center"> <a href="https://github.com/mcp-tool-shop-org/mcp-voice-soundboard/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/mcp-voice-soundboard/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <a href="https://www.npmjs.com/package/@mcptoolshop/voice-soundboard-mcp"><img src="https://img.shields.io/npm/v/@mcptoolshop/voice-soundboard-mcp" alt="npm"></a> <a href="https://codecov.io/gh/mcp-tool-shop-org/mcp-voice-soundboard"><img src="https://img.shields.io/codecov/c/github/mcp-tool-shop-org/mcp-voice-soundboard" alt="Coverage"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a> <a href="https://mcp-tool-shop-org.github.io/mcp-voice-soundboard/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a> </p>

<p align="center"> 48 voices • 9 languages • 5 presets • 8 emotions • SSML-lite • SFX tags • multi-speaker dialogue<br> Swappable TTS backends. Guardrails built in. Ships as a single <code>npx</code> command. </p>


Highlights

  • MCP native — stdio transport, works with Claude Desktop, Cursor, and any MCP client
  • 5 toolsvoice_speak, voice_dialogue, voice_status, voice_interrupt, voice_inner_monologue
  • 48 approved voices, 9 languages — English (American + British), Japanese, Mandarin, Spanish, French, Hindi, Italian, Brazilian Portuguese. Curated presets: narrator, announcer, whisper, storyteller, assistant
  • Emotion spans — 8 emotions via {joy}...{/joy} inline markup
  • SSML-lite<break>, <emphasis>, <prosody> without full SSML complexity
  • SFX tags[ding], [chime], [whoosh], [tada], [pop], [click] inline sound effects
  • Multi-speaker dialogueSpeaker: line format with auto-cast and pause directives
  • Guardrails — rate limiting, concurrency semaphore, request timeouts, path traversal protection, secret redaction
  • Swappable backends — Mock (built-in), HTTP proxy, Python bridge, or bring your own

Quick Start

npx @mcptoolshop/voice-soundboard-mcp

Or install globally:

npm install -g @mcptoolshop/voice-soundboard-mcp
voice-soundboard-mcp

Claude Desktop / MCP Client Config

Add to your MCP client configuration (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "voice-soundboard": {
      "command": "npx",
      "args": ["-y", "@mcptoolshop/voice-soundboard-mcp"]
    }
  }
}

With options:

{
  "mcpServers": {
    "voice-soundboard": {
      "command": "npx",
      "args": [
        "-y", "@mcptoolshop/voice-soundboard-mcp",
        "--artifact=path",
        "--output-dir=/tmp/voice-output",
        "--timeout=30000",
        "--max-concurrent=2"
      ]
    }
  }
}

MCP Tools

voice_speak

Synthesize speech from text.

text:         "Hello world!"
voice?:       "am_fenrir"          # Voice ID or preset name
speed?:       1.0                  # 0.5 - 2.0
mood?:        "dry"                # Humor mood (sensor-humor integration)
format?:      "wav"                # wav | mp3 | ogg | raw
artifactMode?: "path"             # path | base64
outputDir?:   "subdir"            # Subdirectory within output root
sfx?:         true                # Enable [ding], [chime] etc.

voice_dialogue

Multi-speaker dialogue synthesis.

script:       "Alice: Hello!\nBob: Hey there!"
cast?:        { "Alice": "af_sky", "Bob": "am_fenrir" }
speed?:       1.0
concat?:      true                 # Combine into single file
debug?:       true                 # Include cue_sheet
artifactMode?: "path"             # path | base64
outputDir?:   "subdir"            # Subdirectory within output root

voice_status

Returns engine health, available voices, presets, and backend info. No arguments.

voice_interrupt

Stop or rollback active synthesis.

streamId?:    "stream-123"
reason?:      "user_spoke"         # user_spoke | context_change | timeout | manual

voice_inner_monologue

Ephemeral micro-utterances for ambient narration. Requires --ambient flag or VOICE_SOUNDBOARD_AMBIENT_ENABLED=1.

text:         "Interesting..."     # Max 500 chars, auto-redacted
category?:    "thinking"           # general | thinking | observation | debug

Voices

48 voices across 9 languages. Language is auto-inferred from the voice ID prefix — no configuration required.

Prefix Language
af_ / am_ English (American)
bf_ / bm_ English (British)
jf_ / jm_ Japanese
zf_ / zm_ Mandarin Chinese
ef_ / em_ Spanish
ff_ French
hf_ / hm_ Hindi
if_ / im_ Italian
pf_ / pm_ Brazilian Portuguese

English — American

ID Name Gender Style
af_aoede Aoede Female Musical
af_bella Bella Female Warm
af_heart Heart Female Caring
af_jessica Jessica Female Professional
af_kore Kore Female Youthful
af_nicole Nicole Female Soft
af_sarah Sarah Female Clear
af_sky Sky Female Airy
am_eric Eric Male Confident
am_fenrir Fenrir Male Powerful
am_liam Liam Male Friendly
am_michael Michael Male Deep
am_onyx Onyx Male Smooth
am_puck Puck Male Playful

English — British

ID Name Gender Style
bf_alice Alice Female Proper
bf_emma Emma Female Refined
bf_isabella Isabella Female Warm
bm_fable Fable Male Storytelling
bm_george George Male Authoritative
bm_lewis Lewis Male Friendly

Japanese

ID Name Gender Style
jf_alpha Alpha Female Clear
jf_gongitsune Gongitsune Female Storytelling
jf_nezuko Nezuko Female Gentle
jf_tebukuro Tebukuro Female Warm
jm_kumo Kumo Male Calm

Mandarin Chinese

ID Name Gender Style
zf_xiaobei Xiaobei Female Bright
zf_xiaoni Xiaoni Female Gentle
zf_xiaoxiao Xiaoxiao Female Clear
zf_xiaoyi Xiaoyi Female Warm
zm_yunjian Yunjian Male Authoritative
zm_yunxi Yunxi Male Friendly
zm_yunxia Yunxia Male Calm
zm_yunyang Yunyang Male Confident

Spanish

ID Name Gender Style
ef_dora Dora Female Warm
em_alex Alex Male Confident
em_santa Santa Male Jolly

French

ID Name Gender Style
ff_siwis Siwis Female Refined

Hindi

ID Name Gender Style
hf_alpha Alpha Female Clear
hf_beta Beta Female Warm
hm_omega Omega Male Deep
hm_psi Psi Male Calm

Italian

ID Name Gender Style
if_sara Sara Female Warm
im_nicola Nicola Male Confident

Brazilian Portuguese

ID Name Gender Style
pf_dora Dora Female Warm
pm_alex Alex Male Confident
pm_santa Santa Male Jolly

Presets

Preset Voice Speed Description
narrator bm_george 0.95 Calm, clear, documentary style
announcer am_eric 1.1 Bold, energetic, broadcast style
whisper af_sky 0.85 Soft, intimate, gentle
storyteller bf_emma 0.90 Expressive, varied pacing
assistant af_jessica 1.0 Friendly, helpful, conversational

Emotion Spans

Wrap text in emotion tags to control prosody and voice routing:

{joy}Great news!{/joy} But {calm}let me explain.{/calm}

Supported: neutral, serious, friendly, professional, calm, joy, urgent, whisper

CLI Flags

Flag Default Description
--artifact=path|base64 path Audio delivery mode
--output-dir=<path> <tmpdir>/voice-soundboard/ Output directory
--backend=mock|http|python mock Backend selection
--ambient off Enable inner-monologue system
--max-concurrent=<n> 3 Max concurrent synthesis requests
--timeout=<ms> 60000 Per-request timeout
--retention-minutes=<n> 240 Auto-cleanup age (0 to disable)

Packages

This is a pnpm monorepo with two publishable packages:

Package Description npm
@mcptoolshop/voice-soundboard-core Backend-agnostic core library (validation, SSML, chunking, schemas) npm
@mcptoolshop/voice-soundboard-mcp MCP server with CLI, guardrails, and transport npm

Development

# Install
pnpm install

# Build
pnpm build

# Test (363 tests)
pnpm test

# Build + test in one step
pnpm verify

Part of MCP Tool Shop

Project Structure

mcp-voice-soundboard/
  packages/
    core/               @mcptoolshop/voice-soundboard-core
      src/
        limits.ts         SHIP_LIMITS, text/chunk limits
        schemas.ts        VoiceRequest, VoiceResponse, error codes
        artifact.ts       resolveOutputDir, path sandbox
        voices.ts         Approved voice registry + presets
        emotion.ts        Emotion span parser
        ssml/             SSML-lite parser + limits
        chunking/         Text chunker
        sfx/              SFX tag parser + registry
        sandbox.ts        Safe filenames, symlink checks
        ambient.ts        AmbientEmitter for inner monologue
        redact.ts         PII/secret redaction
    mcp-server/         @mcptoolshop/voice-soundboard-mcp
      src/
        server.ts         MCP tool registration + guardrail wiring
        cli.ts            CLI entrypoint (stdio transport)
        backend.ts        Backend abstraction + mock/HTTP
        concurrency.ts    SynthesisSemaphore
        rateLimit.ts      ToolRateLimiter (sliding window)
        timeout.ts        withTimeout utility
        retention.ts      Output file cleanup timer
        redact.ts         Server-level redaction
        validation.ts     Synthesis result validation
        tools/            Individual tool handlers
  assets/               Logo, audio event manifests
  docs/                 Architecture docs

Privacy

No telemetry. This tool collects no usage data, sends no analytics, and makes no network requests except to the TTS backend you configure. All processing is local.

Security

See SECURITY.md for vulnerability reporting.

See THREAT_MODEL.md for the full threat surface analysis.

Related

Project Description
soundboard-plugin Claude Code plugin — slash commands, emotion-aware narration

Support

Scorecard

Category Score Notes
A. Security 10/10 SECURITY.md, THREAT_MODEL.md, redaction, no telemetry
B. Error Handling 8/10 Structured error contract (code/hint/retryable), toToolError pattern
C. Operator Docs 9/10 README, CHANGELOG, HANDBOOK, tool docs
D. Shipping Hygiene 9/10 CI, verify script, dependabot, lockfile
E. Identity 10/10 Logo, translations, landing page, metadata
Total 46/50

License

MIT


<p align="center"> Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a> </p>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选