gemini-tts-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GEMINI_TTS_MODEL | No | Default model. If set, this model is prioritized and the tool's model argument is ignored. If unset, the model argument is used, otherwise gemini-3.8-flash-tts. Aliases flash-tts / flash-lite-tts are also allowed. | |
| GEMINI_TTS_VOICE | No | Default prebuilt voice when no voice is specified. Default Kore. | Kore |
| GEMINI_TTS_OUT_DIR | No | Default output directory when out_path is omitted. Default ~/gemini-tts (e.g. ~/Downloads; ~ expands to home). | ~/gemini-tts |
| GEMINI_TTS_TIMEOUT | No | API timeout in seconds. Default 300. | 300 |
| GEMINI_TTS_CLIENT_ID | Yes | OAuth client ID created in setup step 2 (required). | |
| GOOGLE_CLOUD_PROJECT | No | Project ID used for quota attribution (required unless GEMINI_TTS_PROJECT_ID is set). | |
| GEMINI_TTS_PROJECT_ID | No | Project ID used for quota attribution (required unless GOOGLE_CLOUD_PROJECT is set). | |
| GEMINI_TTS_SAMPLE_RATE | No | Default sample rate. Default 24000 (also 16000 / 8000). | 24000 |
| GEMINI_TTS_VOICE_CACHE | No | Path for the cache of voice description to voice_id and scene to plan. Default ~/.gemini_tts_mcp_voices.json. | ~/.gemini_tts_mcp_voices.json |
| GEMINI_TTS_CLIENT_SECRET | Yes | OAuth client secret from setup step 2 (required). | |
| GEMINI_TTS_PLANNER_MODEL | No | Text model used to design the voice and speaking style from scene. Default gemini-3.8-flash. | gemini-3.8-flash |
| GEMINI_TTS_REDIRECT_PORT | No | Optional local port for initial authorization. If unspecified, an available port is automatically selected. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
自分の Google Cloud プロジェクトの Gemini API 経由で Gemini 3.8 Flash TTS を使い、文章を音声(WAV)にする MCP サーバー。generate_speech に text(読み上げる文章)と voice_description(どんな声にしたいかの自然文。例: '落ち着いた30代女性のニュースキャスター')を渡すと、その声を作って読み上げる。同じ説明なら同じ声が再利用される。話し方(感情・速さ)は style、プリビルトボイスを直接使うなら voice(例: Kore)。用途・場面が分かっているときは scene(例: 'AWS のイベントでのプレゼン')を渡すと、その場面に合う声と話し方を自動で考える(同じ scene なら同じ声)。plan_speech で音声を作らずにプランだけ確認できる。声だけ試聴したいときは design_voice。認証エラー時は reauthorize を実行する。
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| auth_statusA | 認証・プロジェクト・モデルの準備状況を確認する。 Returns: ready: 音声生成の準備が整っているか auth: 認証状態(valid / expired / needs_reauth) client_configured: OAuthクライアント(ID/SECRET)が設定済みか project_id: 解決されたプロジェクトID model / default_voice / out_dir: 現在の既定値 message: 状態の説明と次のアクション |
| reauthorizeA | ブラウザで Google に再ログインしてトークンを取り直す。 ブラウザが自動で開き、Google のログイン画面が表示されます。 認可を完了すると新しいトークンが保存されます。 認証エラー(401等)や Refresh Token 失効時に実行してください。 |
| list_modelsA | 利用可能な TTS モデル・別名・プリビルトボイス・出力設定の一覧を返す。 |
| list_voicesB | 使える声の一覧を返す(自分の保存ボイス → プリビルトボイスの順)。 Args: language_code: 言語で絞り込み(例: ja-JP, en-US)。 gender: 性別で絞り込み(female / male / neutral)。 voice_type: 種類で絞り込み(prebuilt / prompted / replicated)。 prompted はボイスデザインで作った声。 search: キーワード検索(例: warm, calm)。 page_size: 1 ページの件数(既定 50、最大 1000)。 page_token: 次ページ取得用のトークン(前回の next_page_token)。 project_id: プロジェクトID上書き(任意)。 Returns: voices: API から取得した声の一覧(id / display_name / type など) next_page_token: 続きがある場合のトークン designed_voices_local: この MCP がボイスデザインで作った声(説明文 → voice_id) |
| design_voiceA | どんな声にしたいかを自然文で説明して、新しい声を作る(ボイスデザイン)。試聴用サンプルも保存する。 作った声は voice_id(voice_...)でプロジェクトに保存され、generate_speech の voice に 渡して何度でも使える(generate_speech に同じ条件の voice_description を渡した場合も この声が使われる)。呼ぶたびに新しい声を作るので、気に入るまで説明を変えて試せる。 Args: description: 声の説明(年齢・性別・声質・話し方の雰囲気・なまりなど、恒常的な特徴を 1〜2 文で)。 例: "穏やかで落ち着いた 40 代男性のナレーター。低めで温かみのある声" 例: "A crisp, energetic sports announcer in her 30s with a slight Midwestern accent." display_name: 声の表示名(任意。省略時は説明文の先頭)。 gender: 性別(任意。female / male / neutral)。 language_code: 主に話す言語(任意。BCP-47。例: ja-JP, en-US)。 pitch: 声の高さ(任意。low / medium / high)。 accent: なまり・アクセント(任意。例: "Kansai", "British")。 base_voice: リミックス元の声(任意)。プリビルト名(例: Puck)または voice_... を指定すると、 description は「その声からどう変えるか」の指示として扱われる。 model: 使用モデル(任意。gemini-3.8-flash-tts / gemini-3.8-flash-lite-tts)。 sample_out_path: 試聴サンプル(WAV)の保存先(任意)。省略時は GEMINI_TTS_OUT_DIR。 project_id: プロジェクトID上書き(任意)。 Returns: voice_id / display_name / sample(試聴サンプルの保存先)/ model / expire_time |
| plan_speechA | 用途・場面(scene)から、合う声と話し方を考える(音声は作らない・プレビュー用)。 generate_speech に同じ scene を渡すと、ここで考えたプランがそのまま使われる (プランはキャッシュされ、同じ scene なら毎回同じ声になる)。 気に入らなければ replan=True で考え直すか、voice_description / style を直接指定する。 Args: scene: 音声を使う場面・用途・聞き手など(例: "AWS のイベントでのプレゼン。会場は数百人のエンジニア")。 text: 読み上げる予定の文章(任意。言語判定や雰囲気の参考にする)。 gender: 話者の性別を固定したい場合(任意。female / male / neutral)。 language_code: 言語を固定したい場合(任意。例: ja-JP)。 model: 読み上げに使う TTS モデル(任意。キャッシュの区別に使う)。 enhance_text: True なら text に間( 等)を入れた版も返す(言葉は変えない)。 replan: True ならキャッシュを使わずに考え直す。 project_id: プロジェクトID上書き(任意)。 Returns: voice_description(声の設計)/ style(話し方)/ gender / language_code / rationale(理由)/ cached(キャッシュ再利用か)/ enhanced_text(enhance_text=True のとき) |
| generate_speechA | 文章を、指定した声(または場面に合う声)で読み上げた音声(WAV)を生成する。 声の決め方(上ほど優先。どれも無ければ既定のプリビルトボイス):
Args: text: 読み上げる文章(言語は自動判定)。強調したい語を大文字にする、句読点や「…」で間を作る、 などのタグ(英語表記)を文中に 入れると一瞬の笑い・ため息・間を表現できる。 scene: 音声を使う場面・用途・聞き手(任意)。例: "AWS のイベントでのプレゼン。聴衆はエンジニア数百人"。 voice_description: どんな声にしたいかの説明(年齢・性別・声質・雰囲気など恒常的な特徴)。 voice: プリビルトボイス名、または voice_... の ID。 style: 話し方の指示(任意。感情・速さ・抑揚・声量など、その場の話し方)。 例: "嬉しそうに、ややゆっくり" / "whispered urgently"。本文には混ぜずにここへ書く (本文に書くと読み上げられてしまう)。短い方が効果的。scene より優先。 enhance_text: True なら本文に間・息継ぎのタグ( 等)を自動で入れてから読み上げる (言葉は変えない。変わってしまった場合は元の文章のまま読む)。 out_path: 出力先ファイルパス(.wav)。省略時は GEMINI_TTS_OUT_DIR に自動命名で保存。 gender: 話者の性別(任意。female / male / neutral。声を作るとき・scene のプランに使う)。 language_code: 主言語(任意。例: ja-JP。声を作るとき・scene のプランに使う)。 model: 使用モデル(任意)。gemini-3.8-flash-tts(既定)/ gemini-3.8-flash-lite-tts(速い・安い)。 環境変数 GEMINI_TTS_MODEL 設定時はこの引数は無視。 sample_rate: サンプルレート(24000(既定)/ 16000 / 8000)。 replan: True なら scene のプランをキャッシュせずに考え直す(声も変わる)。 project_id: プロジェクトID上書き(任意。クォータ帰属用)。 Returns: success / out_path / files / duration_sec / voice / voice_source / voice_id / style / scene_plan(scene 指定時: 声の設計・話し方・理由)/ text_used(enhance_text 時)/ model / project_id voice_id(voice_...)を次回 voice に渡すと、同じ声で読み上げられる。 |
| delete_voiceA | design_voice / generate_speech で作った保存ボイス(voice_...)を削除する。 保存ボイスはプロジェクトあたり 200 件まで(最終使用から 1 年で期限切れ)。 不要になった声を削除して枠を空けるときに使う。ローカルキャッシュからも削除する。 Args: voice_id: 削除する声の ID(voice_...)。 project_id: プロジェクトID上書き(任意)。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools have clearly distinct purposes: generation, planning, voice creation/deletion, listing, and auth handling. There is minor overlap between list_models and list_voices regarding prebuilt voices, and design_voice vs plan_speech both reason about voice selection, but the descriptions make the boundaries reasonably clear.
Six of eight tools follow a clean verb_noun pattern (list_models, list_voices, design_voice, plan_speech, generate_speech, delete_voice). The auth-related tools reauthorize and auth_status deviate slightly, but the overall convention is still predictable.
Eight tools is well-scoped for a TTS MCP server covering auth, discovery, voice design, planning, generation, and cleanup. Each tool appears to earn its place without obvious redundancy.
The surface covers the core lifecycle: auth status/reauthorization, model and voice discovery, voice creation, speech planning, speech generation, and voice deletion. Minor gaps exist, such as no direct voice rename/update operation or generated-audio history, but these are workable around by redesigning voices or managing files externally.