Local MCP server for IELTS Speaking Coach practice state and review reports.
15 tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Most tools have 1-3 parameters with type info, but descriptions are generic (10-50 chars) and lack actionable guidance. No error handling patterns, no output schemas documented, no parameter constraints (enums, ranges). Tool names follow verb_noun convention (get_, set_, start_, record_, end_, add_, create_, import_, update_) which is good, but descriptions are too brief to guide LLM selection. Example: 'Get the current practice state...' (48 chars) lacks context on when to call vs alternatives. No tool has documented return structure. Composition is reasonable (single responsibility per tool), but chaining IDs are not explicitly returned in descriptions.
Record a speaking issue or area for improvement.
Add a new vocabulary item to the learner's vocabulary list.
Create a new personalized practice plan.
End the current practice session.
Check the health status of the dashboard server.
Get the current practice plan with daily targets and focus areas.
Get available practice questions, optionally filtered by part or topic.
Get the review report for a completed session.
Output schemas not documented. Tools like get_state, get_session_review, get_practice_plan return complex objects but no schema is visible. LLMs cannot plan downstream calls or extract fields without knowing structure.
Parameter descriptions are too brief (10-50 chars) and lack actionable constraints. 'The learner's display name' does not specify length limits, character restrictions, or uniqueness rules. No enums for categorical params like 'category' in add_issue or 'part' in get_questions.
No error handling guidance. Tools lack recovery hints. E.g., if start_session fails because questionId is invalid, the LLM has no guidance to call get_questions first. No categorization of errors as retryable vs user-fixable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2025-06-18+ | v2 |
Get list of past practice sessions with optional filtering.
Get the current practice state including learner profile, sessions, questions, vocabulary, issues, and settings.
Import custom questions from a JSON file or data structure.
Record a user's answer to a question in the current session.
Set the learner's display name.
Start a new practice session with a selected question.
Update learner settings such as recording preferences.
Tool descriptions lack context on when to use them vs alternatives. 'Get available practice questions' does not explain when to call get_questions vs get_state. No dependency hints like 'Call get_questions first to find a questionId for start_session.'
Pagination not documented. get_questions and get_sessions accept limit/offset but no total_count or next_cursor is mentioned in descriptions. Large result sets could blow context window without explicit pagination guidance.