MCP server exposing UC Santa Cruz CSE course catalog search, schedule lookup, and academic calendar tools. Provides semantic+keyword search over the UCSC course catalog, structured schedule/calendar lookups, and web search fallback.
Three tools with basic descriptions and partial schemas. All tools have verb-noun naming (search_, lookup_, get_) which is good. However, descriptions lack depth on WHEN to use each tool and what distinguishes them. Input schemas are present but minimal, parameters have types and basic descriptions, but lack constraints (enums, ranges, patterns). No output schemas documented. Error handling guidance is absent. The server reads like a thin wrapper over a course catalog API rather than an agent-optimized tool interface.
Get UC Santa Cruz academic-calendar dates for 2025-26 (instruction begins/ends, finals, quarter end, priority enrollment). `term` is optional (e.g. "Winter 2026") — omit it to get all quarters.
Look up when a UCSC CSE course is offered: term, meeting days/time, location, instructor, and seat availability. `course_code` like "CSE 142"; `term` is optional (e.g. "Fall 2025") — omit it to see all terms offered.
Search the UC Santa Cruz CSE course catalog for course descriptions, prerequisites, credits, and requirements. Returns the most relevant course entries. Pass a topic (e.g. "machine learning") or a course code (e.g. "CSE 101"). For prerequisite chains, call again with the prerequisite course.
No output schemas documented. LLMs cannot plan downstream tool calls or extract structured data without knowing what fields to expect.
Descriptions lack WHEN-to-use guidance. 'Search the UC Santa Cruz CSE course catalog...' tells WHAT but not WHEN to call this vs lookup_schedule or get_academic_calendar. LLMs waste reasoning cycles deciding between similar tools.
Parameters lack constraints. 'query' in search_catalog accepts any string, no enum, pattern, or length limit. 'term' in lookup_schedule and get_academic_calendar are free-form strings with no format guidance (e.g., 'Fall 2025' vs 'Fall25' vs 'F2025'). LLMs will hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No error handling guidance. If search_catalog returns no results, or lookup_schedule finds no matching term, what should the LLM do next? No recovery hints provided.
Parameter descriptions are generic. 'Optional term (e.g. 'Winter 2026'); omit to get all quarters' uses an example value, which LLMs may reuse literally. Replace with a format constraint (e.g., 'ISO 8601 quarter format: Winter|Spring|Summer|Fall YYYY').