MCP app that teaches any concept with interactive diagrams, mind maps, quizzes, and fill-in-the-blank exercises inside your chat
Lumo registers 4 educational widgets with explicit schemas and detailed descriptions. All tools have input schemas visible in code (diagramInputSchema, quizInputSchema, mindmapInputSchema, fillBlankInputSchema). Descriptions are comprehensive (200-400 chars) and pedagogically sound, explaining WHEN and WHY to use each tool. However, tool names lack action verbs (lumo-sketch, lumo-map, lumo-quiz, lumo-recall are noun-based, not verb_noun pattern). Schemas are well-structured with type definitions and constraints (e.g., maxItems, minItems for quiz options). Output handling is minimal, tools return structuredContent + text, but no documented output schema for downstream chaining. Error handling is absent; no recovery guidance or error categorization. Security: no secrets exposed as parameters (good). Composition: tools are single-purpose and well-separated, but no cross-tool chaining IDs documented.
Display an interactive, zoomable mind map. Write Markdown with headings (# to ####) where each heading becomes a node. Users can pan, zoom, and click branches to explore deeper. Prefer this over diagrams when showing a concept hierarchy or topic overview without directional flow. Keep maps focused: 3-5 top-level branches, 2-4 items each, 2-5 word labels — no sentences. IMPORTANT: In your text response, always tell the user they can click any branch in the mind map to drill into that topic — users often don't realise the map is interactive.
Display a quiz card with 2-4 options. The user's answer triggers an adaptive follow-up. Use for initial comprehension checks. For deeper understanding, prefer lumo-recall. In your text response, encourage the user to pick an answer.
Display a fill-in-the-blank exercise. Mark blanks as {{BLANK_ID}} in the prompt. CRITICAL: every blank must be deducible from the surrounding context alone — the learner should be able to work out the answer from what the sentence already says, without needing the hint. Bad: 'Je veux que tu {{verb}}' (could be ANY verb — eat, sleep, speak). Good: 'The subjunctive "tu" form of the verb "parler" is {{verb_form}}' (context constrains the answer). If the blank could be filled with multiple unrelated words, add more constraining text around it. Keep blank answers to 1-2 words where possible — shorter is fairer for recall. Always provide alternativeAnswers with 3-8 variants (abbreviations, short forms, synonyms, numeric equivalents) so learners aren't penalised for reasonable phrasings — but every alternative must be genuinely correct, not a grammatically wrong form. In your text response, tell the user to type answers and press Enter to check. Mention they can reveal answers if stuck after a couple of attempts.
Tool names lack action verbs. 'lumo-sketch', 'lumo-map', 'lumo-quiz', 'lumo-recall' are noun-based. LLMs infer intent from verb_noun patterns (e.g., 'render_diagram', 'display_mindmap'). Current names require LLMs to read full descriptions to understand what action occurs.
No output schema documented. Tools return structuredContent + text, but downstream tools or agents cannot infer what fields are available for chaining. E.g., does lumo-sketch return node IDs for follow-up drill-down calls?
No error handling or recovery guidance. If a user provides invalid Mermaid syntax or quiz options, the tool returns no actionable error message. LLMs cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2025-06-18+ | v2 |
Display an interactive diagram using Mermaid syntax. Supports flowchart (graph TD/LR), sequenceDiagram, stateDiagram-v2, classDiagram. Provide nodeDescriptions for clickable drill-down nodes. After showing a diagram, check understanding with lumo-quiz (recognition) or lumo-recall (recall). Keep diagrams simple: max 8 nodes, 2-5 word labels. This is your primary 'worked example' tool. Walk through the diagram in the explanation. After showing a diagram, check understanding with quiz (recognition) or recall (recall). If a previous diagram didn't land, try a different diagram type (sequence instead of flowchart) — varying modality activates different mental models. IMPORTANT: In your text response, always tell the user they can click any node in the diagram to explore it deeper — users often don't realise the diagram is interactive.
Schemas lack validation constraints for critical fields. E.g., lumo-sketch.mermaid accepts any string; no validation that it is valid Mermaid syntax. lumo-quiz.options has minItems=2, maxItems=4 (good), but no validation that correctId matches an option id.
Tool descriptions are pedagogically rich but lack concise WHAT/WHEN/WHY structure for LLM selection. Descriptions mix usage guidance with implementation details, making it harder for LLMs to quickly decide which tool to invoke.