An MCP server for Mandarin Chinese vocabulary learning with quiz generation, progress tracking, and spaced repetition
Server has 5 tools with basic schemas and descriptions, but significant gaps limit production readiness. Tool names follow verb_noun convention (take_quiz, submit_quiz_answers, get_quiz_history, export_to_anki, clear_progress). Descriptions exist but are brief (avg ~80 chars, below 194-char baseline). Critical issue: export_to_anki and clear_progress have null parameter descriptions, violating the requirement that every parameter must have a description. Schema definitions are present via jsonschema struct tags but lack formal JSON Schema output documentation. Error handling is minimal, tools return generic error messages without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (DESTRUCTIVE for clear_progress, WRITE for submit_quiz_answers). Parameter validation is implicit (e.g., HSK level 1-6, limit capping) but not documented in descriptions.
Clear all learning progress and start fresh. WARNING: deletes progress but keeps vocabulary.
Export learned vocabulary to a CSV file suitable for importing into Anki.
Get the history of past quiz attempts with scores and dates.
Submit answers to a quiz and get results.
Generate and take a quiz to test vocabulary knowledge (Chinese-to-English translation).
export_to_anki and clear_progress have null parameter descriptions (hsk_level, filename, confirm). Every parameter must have a non-empty description so LLMs understand what each controls.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk levels. clear_progress is DESTRUCTIVE and should be annotated; submit_quiz_answers is WRITE. Annotations guide agent safety reasoning.
Error messages are generic ('Error generating quiz: %v', 'Error: %v'). They do not tell the LLM what to do next or categorize errors as retryable vs user-fixable. Agents cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Parameter constraints (HSK level 1-6, num_questions max 20, limit max 50) are enforced in code but not documented in parameter descriptions. LLMs cannot read code, they rely on descriptions to understand valid ranges.
No output schema documentation. Tools return formatted text (textOutput) but LLMs need to know the structure of returned data (quiz ID format, history fields, export file path) to plan downstream calls.