MCP server for AI video, speech, music & transcription with multiple providers. Video: Volcengine Ark Seedance, DashScope, Kling, SiliconFlow, Vidu, MiniMax, Google Veo. Audio: MiniMax + Google Lyria/TTS/STT.
Server has 8 tools with basic schemas and descriptions, but significant gaps limit production readiness. Tool names follow verb_noun convention (generate_video, query_video, speak, etc.), which is good. However, descriptions are often generic or template-like (e.g., generate_video description includes unfilled placeholders like '{', '.join(provider_names)}'), and parameter descriptions lack specificity about constraints, formats, and valid ranges. Schemas are present but incomplete: many parameters lack type constraints (e.g., 'provider' is a free-form string with no enum), and output schemas are not documented. Error handling is minimal, no recovery guidance or actionable error messages visible in code. Security concern: API keys are injected via environment variables (good), but no validation of untrusted input from LLM calls (e.g., file paths in image_url, output_directory could enable path traversal).
Generate music from a text prompt using music generation providers.
Generate a video from a text prompt (text-to-video) or from an image + prompt (image-to-video, ark/veo). Available providers: {', '.join(provider_names) or 'none configured'}. Default: {default or 'none'}.
List all available music generation providers.
List all available text-to-speech providers.
List all available video generation providers and their models.
Query the status of a video generation task and retrieve the video URL when ready.
Generate speech from text using text-to-speech providers.
generate_video description contains unfilled template placeholders ('{', '.join(provider_names) or 'none configured'}') instead of actual provider names. LLM cannot determine available providers from the description alone.
Provider and model parameters are free-form strings with no enum constraints. LLMs will hallucinate invalid provider names. Should declare enums like {"enum": ["ark", "kling", "minimax", ...]}.
Output schemas are not documented. Callers cannot know what fields generate_video returns (e.g., task_id, video_url, status). LLMs cannot plan downstream calls without knowing response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Transcribe audio file to text with word-level timestamps using Google Cloud Speech-to-Text.
Path parameters (image_url, output_directory, audio_path) accept arbitrary strings with no validation. LLM could pass '../../../etc/passwd' or absolute paths outside intended directories, enabling path traversal attacks.
No error handling guidance. Code has try/except blocks but returns generic errors (e.g., 'Unknown provider') without suggesting next steps. LLM cannot self-correct or retry intelligently.