MCP server for downloading Douyin videos and using ASR API to extract text
Server has 3 tools with basic schemas and descriptions, but suffers from significant quality gaps. Tool names follow verb_noun convention (positive), but descriptions are inconsistent in length and quality. Descriptions are in Chinese, which creates ambiguity for English-speaking LLM agents. Parameter descriptions exist but are minimal. No output schemas are documented. Error handling is present but not recovery-focused. The server lacks parameter constraints (enums, ranges), input validation guidance, and explicit return type documentation. Tool composition is reasonable (each tool does one thing), but chaining support is unclear.
从抖音分享链接提取视频中的文本内容
获取抖音视频的无水印下载链接
解析抖音分享链接,获取视频基本信息
Descriptions are in Chinese, limiting LLM understanding. Tool descriptions like '获取抖音视频的无水印下载链接' will not be reliably parsed by English-centric LLM agents. Descriptions must be in English for cross-region agent compatibility.
No output schemas documented. Tools return JSON strings (get_douyin_download_link returns {status, video_id, title, download_url, description, usage_tip}; extract_douyin_text returns text_content; parse_douyin_video_info returns {video_id, title, download_url, status}), but these are never formally documented. LLMs cannot reliably extract fields from unstructured responses.
No parameter constraints (enums, regex, ranges). The 'provider' parameter in extract_douyin_text accepts 'dashscope' or 'fish' but is defined as a free-form string. The 'model' parameter similarly has no validation. LLMs will hallucinate invalid values.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Error messages are generic and non-actionable. Catch-all exception handling returns 'error: <str(exc)>' without recovery guidance. E.g., 'Invalid share link format' should suggest 'Use a Douyin share link (e.g., https://www.iesdouyin.com/share/video/{video_id}) or copy from the share button.'
Missing tool annotations. No destructiveHint or readOnlyHint declared in tool registration. All three tools are READ_ONLY (per metadata), but this is not reflected in the tool schema. Current spec (2026-07-28) expects tool annotations in the tool definition.
Parameter descriptions are minimal (7-15 words). 'share_link' description is '抖音分享链接或包含链接的文本' (~18 chars, non-English). Baseline A+ tools have 50-100 char descriptions per param. Descriptions should state format, where to find, and examples of valid input.
No dependency documentation. extract_douyin_text requires API keys (DASHSCOPE_API_KEY or FISH_API_KEY) but does not state this in the tool description. Parameter 'provider' hints at this ('默认读取环境变量 ASR_PROVIDER'), but it is vague. Tool description must explicitly say 'Requires environment variable ASR_PROVIDER=dashscope or ASR_PROVIDER=fish with corresponding API key.'
Inconsistent parameter handling. extract_douyin_text accepts 'model' and 'provider' as optional, with defaults read from environment variables. This is undocumented in the tool definition schema, the schema shows these as optional string params but does not explain the environment variable fallback or default values.