Educational content generation MCP server using Educhain and LLMs for generating lesson plans, flashcards, and multiple-choice questions
Three tools with basic schemas and descriptions, but significant quality gaps. Tool names lack action verbs (generate_Lessonplan, generate_flashcards, Topicwise_MCQ_Generator use inconsistent casing). Descriptions are present but generic, they lack WHEN to use guidance, prerequisites, or recovery hints. Parameters have types and basic descriptions, but lack constraints (enums, ranges, format specs). Output is unstructured text (StringIO), not typed objects, LLMs cannot parse results reliably. No error handling, no pagination support, no idempotency guarantees. Naming inconsistency (snake_case vs PascalCase) signals low polish. Per-tool average: 42.
Generate multiple-choice questions with answer form a given topic with extra information. Generate multiple-choice questions with proper question, answer, options and explanation. Args: query_topic: The topic to generate questions for. eg. "Quantum Mechanics" MCQ_number: The number of questions to generate. eg. 5 extra_information: Additional instructions for the question generation. eg. "Solving quantum mechanics problems" Returns: A list of multiple-choice questions with options, correct answer, and explanation.
Generate a well detailed lesson plan for a given topic lesson plan with main topics, subtopics, key concepts, discussion questions, hands-on activities, reflective questions, and assessment ideas. Input Args and format : lesson_topic: The topic to generate a lesson plan for, eg. "Photosynthesis" Returns: A well detailed lesson plan.
Generate flashcards for a given topic. Args: topic: The topic to generate flashcards for. Returns: A list of flashcards.
Tool names lack action verbs and use inconsistent casing. 'generate_Lessonplan' mixes snake_case and PascalCase; 'Topicwise_MCQ_Generator' is non-standard. LLMs rely on verb-noun naming to infer intent. Rename to: generate_lesson_plan, generate_flashcards (OK), generate_mcq_questions.
Output is unstructured text (StringIO formatted strings), not typed JSON objects. LLMs cannot reliably parse or extract fields from free-text responses. Return structured objects: {lesson_plan: {title, subject, main_topics: [{title, subtopics: [...]}]}, ...}.
No input validation, error handling, or recovery guidance. If Groq API fails or topic is invalid, users get raw exceptions. Add try-catch blocks, validate inputs (non-empty strings, MCQ_number > 0), and return actionable errors: 'Invalid MCQ_number: must be 1-50. Got: 0'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Parameter descriptions lack constraints. 'lesson_topic' accepts any string, no guidance on length, format, or invalid inputs. Add: 'A topic name (1-200 chars, e.g. "Photosynthesis"). Avoid special characters.' MCQ_number has no range, add 'Integer 1-50'.
Tool descriptions lack WHEN-to-use guidance and prerequisites. 'Generate a well detailed lesson plan' does not explain when to call this vs. generate_flashcards, or that it requires a valid Groq API key. Add: 'Use this to create structured lesson plans with learning objectives, activities, and assessments. Requires GROQ_API_KEY env var.'