Educational MCP server providing tools for student assessment, question generation, hints, and student profile management
EducTools presents mixed definition quality. Tool names follow verb-noun convention (evaluate_answer, generate_question, get_hint, get_student_profile), which is good. However, descriptions are minimal and lack LLM-optimization guidance. Schemas are present but sparse, most parameters lack type specificity beyond strings. No output schemas are documented. Error handling is minimal, and descriptions fail to explain WHEN to use each tool or WHAT dependencies exist between them. The server does not expose credentials as parameters (good), but lacks any permission gating, audit trails, or actionable error messages. Tool composition is reasonable (one clear responsibility per tool), but the interface does not match agent-friendly patterns, e.g., get_student_profile returns nested objects with no pagination or limits documented.
Evaluates a student's answer against the correct answer.
Generates a question based on topic and difficulty level.
Provides a hint for a given question to help students.
Retrieves the full profile of a student including their learning preferences, progress, and performance metrics.
Tool descriptions are minimal and lack LLM-optimization guidance. Most descriptions (10-45 characters) are below the baseline average of 194 chars. No description explains WHEN to call the tool instead of alternatives or what dependencies exist.
No output schemas are documented. LLMs cannot plan downstream tool calls or extract the right data without knowing what fields are returned. evaluate_answer, generate_question, get_hint, and get_student_profile all return dicts with undocumented structure.
Parameter descriptions are missing or generic. The 'difficulty' parameter in generate_question accepts 'easy, medium, hard' but the description does not specify these are the only valid values, should be an enum. Topic parameters lack guidance on valid values or discovery mechanism.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
No error handling or recovery guidance. get_student_profile returns {'status': 'error', 'message': '...'} on failure, but the response does not guide the LLM on what to do next. No mention that available_students could be used to retry with a valid student_id, nor does it explain that this is user-fixable vs fatal.
Tool composition issue: get_student_profile returns nested performance_metrics and other complex objects without explaining what fields the LLM should extract or how to use them downstream. No pagination or limits documented despite potentially returning large profiles.
No permission gating, audit trails, or scope declarations. Tools that access student data (get_student_profile) do not declare what permissions they require. No logging of who called what tool and when, critical for educational compliance contexts.