FastMCP MCP Server for podcast downloading, transcription, and analysis with Modal deployment and Gradio UI
Server has 6 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-100 chars, mostly adequate) and input schemas with types. However, parameter descriptions are sparse or missing context. No output schemas documented. Error handling is minimal, tools return generic error dicts without recovery guidance. Tool naming follows verb_noun convention (good), but composition issues exist: download tools mix concerns (download + convert + save). No tool annotations (readOnlyHint/destructiveHint). Schemas lack enums for constrained inputs (e.g., model_size, output_format, language). Parameter descriptions omit format/range constraints. Overall: functional but below production baseline.
Download Apple Podcast audio files
Download XiaoYuZhou podcast audio files
Get basic file information
Scan directory for MP3 audio files
Read text file content in segments
Transcribe audio files to text using Whisper model with speaker diarization support
No output schemas documented. LLMs cannot predict response structure or plan downstream tool chains. Tools return dicts with inconsistent field names (e.g., 'status'/'error_message' in download tools, but no schema for transcribe_audio_file_tool output).
Parameter descriptions lack format/range constraints. 'model_size' accepts 'tiny, base, small, medium, large, turbo' but is not declared as an enum, LLMs may hallucinate invalid values. 'chunk_size' and 'start_position' lack min/max bounds.
Error handling is generic and non-actionable. Download tools return 'error_message' strings but do not guide recovery (e.g., 'URL invalid. Try a direct podcast link.' or 'Network timeout. Retry in 30s.'). No error classification (retryable vs fatal).
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Download tools are destructive (write files) but lack destructiveHint. Transcribe and read tools are read-only but lack readOnlyHint. Agents cannot infer safety/retry semantics.
Composition issue: download_apple_podcast_tool and download_xyz_podcast_tool combine download + convert + save. Should split into separate tools (download_podcast, convert_to_mp3) so agents can compose them independently.