MCP server for local speech translation (EN ↔ 中文) via Whisper + Claude + Piper
Three tools with complete schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (translate_*, health_check). Descriptions are adequate (100-200 chars) but lack actionable guidance on when to use each tool vs. the other. Parameters lack type constraints (e.g., sample_rate has no min/max bounds). Output schemas are not formally documented, responses are JSON strings, not structured objects. Error handling returns plain text rather than categorized, actionable guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). translate_file performs file I/O with side effects (writes, plays audio) but description does not explicitly state this is destructive/irreversible.
Check whether all live-translate-mcp dependencies are available: Whisper model cache, Piper voice files, and espeak-ng binary.
Translate a speech audio file between English and Mandarin Chinese. Pass an absolute path to a WAV file. Automatically detects the input language and translates to the other. Saves the translated audio next to the source file and plays it. Returns original text and translation.
Translate speech audio between English and Mandarin Chinese. Automatically detects the input language and translates to the other. Returns original text, translation, and synthesised audio as base64-encoded WAV.
Output schemas not formally documented. Responses are JSON strings embedded in text fields, not structured objects. LLMs cannot reliably parse or chain results.
Parameters lack type constraints. sample_rate has no min/max bounds; file_path has no format validation or path traversal guards. Unbounded numeric params invite absurd values.
translate_file performs destructive side effects (file write, audio playback) but description does not explicitly state this. No confirmation step or dry-run option. Agents may invoke unintentionally.
Error responses are plain text without categorization or recovery guidance. 'Translation failed: <error>' tells LLM nothing about whether to retry, ask user, or abort.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot infer which tools are safe to retry or have side effects.