Simple Voice MCP Server
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., "@Simple Voice MCP Serversay こんにちは、今日の天気予報をお伝えします"
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.
Simple Voice MCP Server
テキストを送信するだけで音声再生するシンプルなMCPサーバーです。 複数のキャラクターボイスに対応し、同時音声再生も可能です。
主な機能
🎤 複数のキャラクターボイスに対応
🔊 複数音声の同時再生が可能(VLC使用)
📝 カスタム辞書による英単語の読み方設定
🌐 WSL環境で自動的にWindows側で音声再生
🧹 一時ファイルの自動クリーンアップ
Related MCP server: PVV MCP Server
必要な環境
Windows側の要件
VLCメディアプレーヤーのインストールが必要です:
# PowerShellで実行
winget install -e --id VideoLAN.VLCまたはVLC公式サイトからダウンロードしてインストール
WSL側の要件
# 依存関係のインストール
uv sync提供するツール
1. say - テキスト読み上げ
say("こんにちは!今日はいい天気ですね。")
# → 設定されたキャラクターの声で音声再生2. add_to_dictionary - カスタム辞書への登録
# 単語の登録
add_to_dictionary(english="API", katakana="エーピーアイ")
# 複数同時登録(カンマ区切り)
add_to_dictionary(
english="HDMI,USB,API",
katakana="エイチディーエムアイ,ユーエスビー,エーピーアイ"
)3. remove_from_dictionary - カスタム辞書から削除
# 単語の削除
remove_from_dictionary(english="API")
# 複数同時削除
remove_from_dictionary(english="HDMI,USB")4. list_dictionary - カスタム辞書の一覧表示
list_dictionary()
# → 登録されている全ての単語と読み方を表示セットアップ
基本設定
MCPクライアントの設定(.mcp.jsonなど)に追加:
{
"mcpServers": {
"simple-voice": {
"command": "uv",
"args": [
"--directory",
"/path/to/voice-mcp",
"run",
"simple_voice_mcp.py"
]
}
}
}音声モデルの変更
--model 引数で好きなキャラクターの声を選べます:
{
"mcpServers": {
"simple-voice": {
"command": "uv",
"args": [
"--directory",
"/path/to/voice-mcp",
"run",
"simple_voice_mcp.py",
"--model",
"syouzyo_4"
]
}
}
}複数キャラクターの同時利用
異なるキャラクターを同時に使いたい場合:
{
"mcpServers": {
"simple-voice": {
"command": "uv",
"args": ["--directory", "/path/to/voice-mcp", "run", "simple_voice_mcp.py", "--model", "syouzyo_4"]
},
"simple-voice-sutera": {
"command": "uv",
"args": ["--directory", "/path/to/voice-mcp", "run", "simple_voice_mcp.py", "--model", "sutera"]
}
}
}利用可能な音声モデル
男性音声
ozisan_1: イケボのおじさんの声ozisan_2: 普通のおじさんの声seinen_2: さわやかな関西弁のお兄さんの声seinen_3: ちょっと気弱そうなお兄さんの声seinen_4: 声の高い、優しそうなお兄さんの声seinen_5: 声の高い、ちょっとうざそうなお兄さんの声oziisan: おじいさんの声
女性音声
oneesan_1: 少し声の高めのお姉さんの声oneesan_2: 落ち着いた声のお姉さんの声oneesan_3: 声の高いお姉さんの声oneesan_4: 安心感のある透き通ったお姉さんの声obaatyan_1: おばあちゃんの声
少女音声
syouzyo_1: 普通の少女の声syouzyo_2: 元気な少女の声syouzyo_3: ツンデレ系の少女の声syouzyo_4: のじゃろりの声syouzyo_5: 内気な少女の声syouzyo_6: 無気力な少女の声syouzyo_7: のんびり無気力な少女の可愛い声
その他
syounen_1: 元気な少年の声zingai_1: かわいいマスコットキャラクターのような声(デフォルト)sutera: ステラの声
環境変数での設定
環境変数でも設定可能です:
{
"mcpServers": {
"simple-voice": {
"command": "uv",
"args": ["--directory", "/path/to/voice-mcp", "run", "simple_voice_mcp.py"],
"env": {
"VOICE_MODEL": "syouzyo_4",
"VOICE_API_BASE": "https://your-custom-api.com"
}
}
}
}優先順位: コマンドライン引数 > 環境変数 > デフォルト値
技術的な詳細
ファイル構成
simple_voice_mcp.py- MCPサーバーのメインファイルsrc/dictionary_manager.py- カスタム辞書管理src/text_converter.py- テキスト変換(英語→カタカナ)src/audio_player_vlc.py- VLCを使った音声再生
音声再生の仕組み(WSL環境)
WSL環境を自動検出
音声ファイルをWindows一時フォルダにコピー
VLCをバックグラウンドで起動(GUIなし)
複数の音声を同時再生可能
一時ファイルは自動的にクリーンアップ
カスタム辞書
custom_words.csvに単語と読み方を保存リアルタイムでファイル変更を検知
複数のMCPプロセス間で共有
トラブルシューティング
音声が再生されない場合
VLCがインストールされているか確認
Windows Defenderやセキュリティソフトが PowerShell実行をブロックしていないか確認
VLCのパスが正しいか確認(通常は
C:\Program Files\VideoLAN\VLC\vlc.exe)
複数音声が同時再生されない場合
VLCのバージョンが最新か確認
Windows Media Playerが起動していないか確認(VLCと競合する可能性)
日本語が文字化けする場合
ファイルのエンコーディングがUTF-8になっているか確認
ターミナルの文字コード設定を確認
ライセンス
MIT License
Available Tools
4 toolsadd_to_dictionaryB
カスタム辞書に新しい英単語とカタカナ読みのペアを登録します。HDMIやAPIなどの略語や、.pyのような拡張子も登録できます。複数登録する場合はカンマ区切りで指定できます。
| Name | Required | Description | Default |
|---|---|---|---|
| english | Yes | 英単語、略語、または拡張子。複数の場合はカンマ区切り(例: hdmi,api,csv,.py,.csv または 1つ,2つ,3つ) | |
| katakana | Yes | カタカナ読み。複数の場合はカンマ区切り(例: エイチディーエムアイ,エーピーアイ,シーエスブイ,ドットパイ,ドットシーエスブイ または ひとつ,ふたつ,みっつ) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states that entries are registered but does not mention whether duplicates are allowed, if updates occur, or what side effects happen. Lacks detail on mutation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, concise, and front-loaded with the core action. Every sentence provides unique value without redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple addition tool with two required parameters, the description is adequate but lacks completeness. It does not explain return values, error conditions, or whether the operation is idempotent. Given no output schema, more detail would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing detailed parameter explanations including examples for comma-separated values. The tool description adds only minor reinforcement about abbreviations and extensions, so it does not significantly augment the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool registers a pair of English word and katakana reading into a custom dictionary. It specifies what can be registered (words, abbreviations, extensions) and that multiple entries are allowed via comma separation. This distinguishes it from siblings like list_dictionary and remove_from_dictionary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_dictionary or remove_from_dictionary. There is no mention of prerequisites or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dictionaryA
カスタム辞書に登録されているすべての英単語と読み方を表示します。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It correctly conveys a read operation without side effects. Does not elaborate on authentication, scope, or potential empty results. Sufficient for a simple tool but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single Japanese sentence that is concise and immediately understandable. No extraneous words. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description does not specify return format or structure. With siblings suggesting a dictionary context, the description is adequate but could benefit from mentioning that it returns a list or what each entry contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no parameters, so schema coverage is 100%. Description adds value by explaining the output scope (all entries, English words and readings), which is more informative than the empty schema alone. Appropriate for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (listing) and resource (English words and readings from custom dictionary). It differentiates from siblings add_to_dictionary, remove_from_dictionary, and say by describing a read-only retrieval. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: when you need to view dictionary contents. However, no explicit guidance on when to use vs alternatives, nor conditions like requiring dictionary population first. Adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_dictionaryA
カスタム辞書から指定した英単語のエントリを削除します。複数削除する場合はカンマ区切りで指定できます。
| Name | Required | Description | Default |
|---|---|---|---|
| english | Yes | 削除する英単語。複数の場合はカンマ区切り(例: hdmi,api,.py または test,1つ,2つ) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the deletion behavior and comma-separated input. However, it does not mention what happens if the word does not exist, or if there are any irreversible side effects. The destructive nature is implied but not fully detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the verb (削除します/delete). No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and no nested objects, the description is largely complete. It explains the action and input format. It could mention whether deletion is permanent or if there is a confirmation step, but overall adequate for the agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (single parameter with description). The description adds the comma separation detail but does not provide significant meaning beyond the schema. With high coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (削除する/delete) and the resource (カスタム辞書/custom dictionary). It also specifies that multiple entries can be deleted with comma separation. This clearly distinguishes it from sibling tools like add_to_dictionary (adds) and list_dictionary (lists).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. However, the function is implied by the name and sibling tools: use for deletion, not for adding or listing. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sayA
テキストをかわいいマスコットキャラクターのような声で読み上げます。 ユーザーにお知らせするときはこのキャラクターになりきって楽しませながら報告しましょう!
日本語のテキストを音声合成し、WSL環境では自動的にWindows側で再生されます。 英単語が含まれている場合は自動的にカタカナに変換されます。
Args: text: 読み上げたいテキスト(日本語・英語混在可能)
Returns: 成功時は"✓"、エラー時はエラーメッセージ
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explica síntesis de voz, reproducción en WSL, conversión de inglés a katakana, y mensajes de retorno. Sin anotaciones, la descripción es suficiente.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Información concisa con estructura clara: propósito, cuándo usarlo, comportamiento, argumentos y retorno. Sin redundancias.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Cubre todos los aspectos necesarios para un tool simple: propósito, uso, parámetros, comportamiento y resultado.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
El parámetro 'text' se describe claramente en la sección Args: texto a leer, admite japonés e inglés. Añade valor más allá del esquema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Descripción clara: indica que lee texto en una voz de mascota linda, y distingue de herramientas hermanas (diccionarios).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Sugiere usarlo para notificar usuarios de forma divertida, pero no excluye alternativas ni menciona cuándo no usarlo.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
add_to_dictionary - First observed
list_dictionary - First observed
remove_from_dictionary - First observed
say
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: dictionary management (add, list, remove) and text-to-speech. No overlap or ambiguity.
Dictionary tools follow a consistent 'verb_to_dictionary' pattern, but 'say' deviates without a noun suffix. Overall still readable.
4 tools is well-scoped for a simple voice server, covering dictionary management and one core action.
Core functionality exists (dictionary and TTS), but lacks features like voice selection, speed control, or stop speaking, which may limit usage.
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/
AI voice generation: text-to-speech and voice cloning from any MCP client.
MCP server for Text-to-Speech
Pronunciation scoring, speech-to-text, and text-to-speech for language learning
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables text-to-speech synthesis using VOICEPEAK software with support for custom narrators, emotions, and pronunciation dictionaries. Allows generating and playing audio files from text with configurable voice parameters.76MIT
- AlicenseNot gradedqualityCmaintenanceEnables text-to-speech synthesis using VOICEVOX Web API with customizable speaker selection. Features a specialized tool for generating speech as Asuka Langley from Evangelion and provides access to available speaker lists.Apache 2.0
- FlicenseAqualityDmaintenanceAn MCP server that enables text-to-speech generation and phonetic kana conversion using VOICEROID2 via voiceroid_daemon. It supports customizable voice parameters and provides cross-platform audio playback for synthesized speech.3-
- AlicenseNot gradedqualityDmaintenanceProvides text-to-speech functionality via VoiceVox, enabling Claude to generate spoken audio from text using various voices.2MIT