audio-story-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VIENEU_URL | No | URL of the VieNeu-TTS server when it runs on another machine. By default the local VieNeu-TTS server is used. | |
| OPENAI_API_KEY | No | OpenAI API key for transcription with gpt-4o-transcribe. Optional; used only when choosing the openai transcription engine. | |
| AUDIO_STORY_RUNS_DIR | No | Root directory for audio-story run files. Defaults to ./audio-story-runs. | |
| AUDIO_STORY_WHISPER_MODEL | No | Whisper model to use for local transcription. Optional; relevant only when using the local whisper transcription engine. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
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 |
|---|---|
| fetch_sourceA | Tạo thư mục run mới từ link YouTube (tải audio + metadata + phụ đề tiếng Việt nếu có) hoặc từ file trên máy
(audio .mp3/.m4a/.wav…, phụ đề .vtt/.srt, hay transcript .txt/.md). Trả |
| transcribeA | Chuyển audio của run thành chữ → transcript/transcript.txt (bản đọc, có mốc thời gian) + transcript.json. engine: auto | captions (phụ đề YouTube) | text (file .txt có sẵn) | openai (cần OPENAI_API_KEY) | whisper (faster-whisper tại máy). Sau đó đọc transcript.txt bằng công cụ đọc file (có thể dài — đọc theo phần). |
| run_statusB | Trạng thái một run: nguồn, file đã có, lịch sử bước, bước kế tiếp nên làm. |
| list_runsB | Liệt kê các run gần nhất dưới thư mục gốc ($AUDIO_STORY_RUNS_DIR, mặc định ./audio-story-runs). |
| check_scriptA | Kiểm tất định story/cast.json + script/script.json → script/check.json, và dựng lại script/script.md để duyệt. Lỗi (chặn tts_render): schema, old_name_leak (còn tên gốc — so cả không dấu), voice_missing (chưa chọn giọng thuyết minh), empty_text. Cảnh báo: high_overlap (% cụm 6 từ trùng bản gốc > max_overlap), segment_too_long, new_name_collision, voice_unknown (khi server TTS đang chạy). |
| list_voicesA | Danh sách giọng của server VieNeu-TTS (id dùng làm |
| tts_previewA | Đọc thử một câu bằng một giọng → file WAV (áp pronunciation.json của run nếu có). Dùng để chọn giọng / thử cách đọc tên trước khi đọc cả truyện. Không có run thì ghi vào ./audio-story-runs/_preview/. |
| tts_renderA | Đọc kịch bản bằng VieNeu → audio/seg_XXXXX.wav, cả truyện một giọng thuyết minh (cast.narrator.voice). Chỉ chạy khi check_script mới nhất không còn lỗi. Đoạn đã đọc với cùng chữ + giọng thì bỏ qua → gọi lại để chạy tiếp. limit: chỉ đọc N đoạn (làm thử); segment_ids: đọc lại đúng các đoạn này; workers>1 khi server có GPU. |
| qa_audioB | Nghe lại các đoạn đã đọc bằng STT (openai | whisper), tính CER so với chữ đưa vào TTS → qa/report.json. Trả các đoạn CER > max_cer để sửa phát âm (pronunciation.json) rồi đọc lại. |
| assemble_audioA | Ghép các đoạn theo thứ tự kịch bản, chèn khoảng nghỉ pause_after_ms (+1,5 s giữa chương) → out/story.wav và out/story.mp3 (chuẩn hoá âm lượng -16 LUFS). allow_missing=true: ghép bản nháp dù còn đoạn chưa đọc. |
| doctorA | Kiểm môi trường: ffmpeg, yt-dlp, engine STT có sẵn, server VieNeu, thư mục run. |
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 11 tools
The tools generally map to distinct pipeline stages: fetch, transcribe, validate, voice selection, TTS render, QA, assembly, and diagnostics. There is some sequential overlap between fetch_source/transcribe and tts_preview/tts_render, but the descriptions make the intended usage clear.
All tool names use snake_case and most follow a verb_noun pattern such as list_runs, fetch_source, check_script, and assemble_audio. Minor deviations like run_status, transcribe, tts_preview, tts_render, qa_audio, and doctor are still readable and predictable by domain context.
Eleven tools is well within a reasonable range for an end-to-end audio story production pipeline. Each tool corresponds to a meaningful stage or utility, and none appear obviously redundant.
The surface covers the main audio workflow: source intake, transcription, script validation, voice listing, TTS preview/render, QA, assembly, and environment diagnostics. Minor gaps remain around explicit script/cast authoring and run cleanup/deletion, though these may be handled by external file tools.