MCP server for UCI course search and degree planning, backed by Anteater API. Live sections, grades, enrollment history, RMP ratings, prerequisites, schedule conflicts and deterministic degree-progress checks.
Anteater MCP demonstrates solid naming conventions (all tools start with action verbs: list_, search_, get_, check_) and comprehensive parameter schemas with type definitions. However, descriptions are inconsistent in depth and actionability. Most tool descriptions (10 - 50 chars) fall below the 50 - 200 char baseline for LLM-optimized clarity. Parameter descriptions are present but often generic ('Optional X filter'). Output schemas are not documented in the source, forcing LLMs to infer response structure. Error handling is basic, no recovery guidance or categorization. Security is sound (no secrets in params, read-only operations). Composition is clean: 19 focused tools with minimal overlap. The server targets a well-defined domain (UCI course planning) with good tool coverage.
Check degree progress and remaining requirements for a program
Check if a student meets the prerequisites for a course
Check for schedule conflicts between course sections
Get AP exam credit information and course equivalencies
Get detailed information about a specific course
Get historical grade distributions for a course
Get course materials and textbook information
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Get detailed information') but do not specify the response structure, field names, or types. LLMs cannot plan downstream tool calls or extract data reliably without knowing what fields to expect.
Descriptions are too brief (10 - 50 chars) and lack actionability. Examples: 'List available academic terms' (34 chars), 'List UCI departments' (20 chars). Baseline for LLM-optimized descriptions is 50 - 200 chars. Short descriptions omit WHEN to use the tool and what it returns, forcing LLMs to guess.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Get detailed information for multiple courses in a single request
Get historical enrollment data for a course
Get instructor information and RateMyProfessors ratings
Get degree requirements for a specific program
Get a sample four-year course plan for a degree program
Get syllabus links and course materials for a course
List UCI departments and their course codes
List UCI degree programs
List available academic terms for course search and registration
Get course recommendations based on scheduling and GE requirements
Search for courses by keyword, department, or level
Search for course sections by term, department, and scheduling criteria
Parameter descriptions are generic and lack format/constraint guidance. Examples: 'Optional department name or code filter' does not specify valid formats, length limits, or examples. Descriptions should state expected format (e.g., '2-4 uppercase letters like CS, ICS') and constraints (e.g., 'max 50 chars').
No error handling guidance. The source shows basic ApiError class but no recovery hints or error categorization. When a course is not found or prerequisites fail, the LLM receives no guidance on what to try next (e.g., 'Try search_courses() with a partial name').
Batch tool (get_courses_batch) accepts 'include' array but does not document valid values. LLMs cannot infer which fields are includable (prerequisites, terms, grades, etc.) without an enum or explicit list in the description.