A multi-server MCP system for student academic guidance, combining exam preparation, course recommendations, and campus task management. Integrates Claude AI with RAG (Retrieval-Augmented Generation) and adaptive learning tracking.
SAGE has 12 tools with complete JSON schemas and descriptions. Naming follows verb_noun convention (search_, summarize_, generate_, log_, identify_, etc.). Descriptions are detailed and include usage guidance (e.g., 'ALWAYS call this tool FIRST'). However, several critical gaps reduce the score: (1) No output schemas documented, LLMs cannot predict return structure for downstream chaining. (2) Parameters lack type constraints (enums, ranges, patterns) in descriptions, e.g., 'difficulty' has enum in schema but no description of what easy/medium/hard mean pedagogically. (3) No error handling guidance, tools return success/failure but don't guide recovery. (4) Missing idempotency/destructiveness annotations, log_confidence and add_deadline modify state but lack confirmation or dry-run patterns. (5) Parameter relationships undocumented, e.g., generate_revision_plan says 'if empty, call identify_weak_topics first' but doesn't enforce or validate this dependency.
Record an upcoming deadline (assignment, exam, project, report, etc.) in the student's task list. Use this when the student says things like 'add a deadline', 'I have an assignment due...', 'remind me about my exam on...', or 'add this to my to-do list'.
Check whether a student has met the prerequisites for a course. Use this when the student asks 'can I take CS401?' or 'am I ready for X?'. Returns the prerequisites and which ones are still missing.
Generate a multiple-choice quiz on a topic. If the student has uploaded materials and references them (e.g. 'quiz me on my notes'), you should call search_materials FIRST to get context, then call this tool with that context in the topic field. For general topics, just pass the topic name.
Build a day-by-day revision schedule for an upcoming exam. Distributes weak topics first, leaves buffer days near the exam for review. Use this when the student says things like 'I have an exam in N days, help me plan' or 'make me a study schedule'.
Read the student's stored academic profile: major, year of study, weak topics, strong topics, and stated goals. Use this when the student asks 'what do you know about me?', 'what's my profile?', or when you need their background to give personalized advice.
No output schemas documented. LLMs cannot predict return structure (fields, types, pagination) for downstream tool chaining. E.g., search_materials returns 'excerpts' but structure is undocumented; identify_weak_topics returns topics but field names/types unknown.
State-modifying tools (log_confidence, add_deadline) lack confirmation/dry-run patterns and destructiveness annotations. Agents cannot distinguish safe retries from irreversible operations. No guidance on idempotency.
Parameter descriptions lack actionable constraints. E.g., 'difficulty' enum (easy|medium|hard) not explained in description; 'top_k' default=3 but no min/max bounds; 'hours_per_day' default=2 but no range guidance (0.5 - 12?). LLMs cannot validate inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Return the student's weekly class timetable, organised by day. Use this when the student asks 'what's my Monday?', 'show me my schedule', or when planning study time around known classes.
Look at the student's confidence history and return the topics where they need the most work. Use this when planning revision, suggesting what to study, or when the student asks 'what should I focus on?' or 'what are my weak areas?'.
List the student's upcoming deadlines, sorted by due date (nearest first). Use this when the student asks 'what's due this week?', 'what's coming up?', 'what do I have to do?', or wants an overview of their workload.
Record how confident a student feels about a topic after studying or taking a quiz. Use this when the student says things like 'I feel confident about X', 'I'm still confused about Y', or after they complete a quiz and rate their understanding. Confidence is on a 0.0-1.0 scale (0=very weak, 1=very strong).
Recommend courses for the student to consider next semester, based on their profile (major, year, completed prerequisites, strengths, weaknesses, and goals). Use this when the student asks 'what should I take next semester?', 'recommend me courses', or 'what would help me reach my goals?'. Returns a ranked list with reasoning.
Search the student's uploaded study materials (lectures, notes, textbooks) for content relevant to a query. ALWAYS call this tool FIRST when the student asks about something in their own materials (phrases like 'what does my lecture say...', 'in my notes...', 'from the document I uploaded...'). Returns the most relevant excerpts.
Generate a high-level summary of a student's entire uploaded document. Use this when the student asks 'what is this document about', 'summarize what I uploaded', or wants the big picture of their materials.
No error handling guidance. Tools return success/failure but don't tell LLM what to do next. E.g., if search_materials finds no results, should agent retry with different query, ask user, or proceed? No recovery paths documented.
Parameter dependencies undocumented. generate_revision_plan says 'if empty, call identify_weak_topics first' but this is prose guidance, not enforced. No schema-level validation or mutual exclusivity rules for related params (e.g., completed_courses vs user_id in recommend_courses).