Skip to main content
Glama
shivendoo123

scottylabs-mcp

by shivendoo123

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SCOTTYLABS_API_BASENoOverride for local backend dev.https://course-tools.apis.scottylabs.org
SCOTTYLABS_AUTH_TOKENNoStatic Clerk session JWT for FCE tools (advanced; bypasses cookie refresh).

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_coursesA

Keyword-search the CMU course catalog.

Use this when the user asks about a topic, department, or partial course name and you don't already have an exact course ID. The query is matched against name, department, description, and prereq string.

Args: query: Free-text search. Examples: "machine learning", "discrete math", "Computer Science", "15-122". Department codes work too. page: 1-indexed page number. The backend caps page size at 10.

Returns: Object with totalDocs, totalPages, page, and docs — a list of courses with courseID, name, department, desc, units, prereqs, etc.

get_courseA

Fetch full details for a single CMU course, including current schedules.

Use this when you already have the exact course ID. Accepts "15-122" or "15122". Returns description, units, prereqs/coreqs, cross-listings, and upcoming schedule with lectures/sections.

Args: course_id: CMU course ID, e.g. "15-122" or "21-241".

Returns: Course object with name, department, desc, units, prereqs, coreqs, crosslisted, schedules, etc.

get_course_schedulesA

Fetch lecture/section schedules for a single course.

Prefer this over get_course when you only need meeting times — the response is much smaller. Returns one schedule per offered semester (typically several across recent years).

Args: course_id: CMU course ID, e.g. "15-122".

Returns: List of Schedule objects.

get_instructor_schedulesA

Fetch all schedules taught by the given instructor.

Use this for "what is X teaching?" or to find classes by professor. Pass the instructor name exactly as it appears in the course data — use search_instructors first to discover the canonical spelling.

Args: instructor: Instructor name, exact-match. Example: "Iliano Cervesato".

Returns: List of Schedule objects across all courses and semesters.

get_requisitesA

Fetch the prerequisite / postrequisite graph for a course.

Use this for "what do I need before X?" or "what unlocks after X?" questions. Returns:

  • prereqs: required courses (flat list).

  • prereqRelations: AND-of-ORs decoding (outer AND, inner OR).

  • postreqs: courses that list this one as a prereq.

Args: course_id: CMU course ID, e.g. "15-213".

Returns: Object with prereqs, prereqRelations, postreqs.

get_genedsA

List gen-ed-eligible courses for a CMU school.

Use this when the user wants courses satisfying a gen-ed requirement for their college.

Args: school: Exactly one of "SCS" (School of Computer Science), "CIT" (engineering), "MCS" (sciences), or "Dietrich" (humanities and social sciences).

Returns: List of Gened objects, each with course info, gen-ed tags, and a startsCounting/stopsCounting window.

search_instructorsA

Look up CMU instructor names from the FCE roster.

Use this to discover the exact spelling/casing of an instructor before calling get_instructor_fces or get_instructor_schedules. Names are exact-match — pass them verbatim downstream.

Args: query: Optional case-insensitive substring filter (e.g. "cervesato"). limit: Max results, default 50, hard cap 200.

Returns: List of instructor name strings.

get_course_fcesA

Fetch Faculty Course Evaluations (FCE) ratings for a course.

Use this when the user asks about course difficulty, hours per week, or instructor ratings. Returns a compact summary: aggregates over all semesters plus the 5 most recent entries. Set include_all=True only when the user asks for the full history.

Auth: requires the env var SCOTTYLABS_AUTH_TOKEN to be set to a valid Clerk JWT. If the upstream backend has auth disabled, the empty token will work too.

Args: course_id: CMU course ID, e.g. "15-122". include_all: Default Falseentries holds the 5 most recent rows and truncated flags whether anything was cut. Pass True to populate entries with every row. Aggregates (avg_hrs_per_week, avg_rating, years_covered) always reflect the full dataset.

Returns: FCESummary with entry_count, years_covered, avg_hrs_per_week, avg_rating, entries, truncated.

get_instructor_fcesA

Fetch Faculty Course Evaluations (FCE) ratings for an instructor.

Use this for a professor's teaching record across courses, or to compare instructors. Returns a compact summary by default; aggregates span every semester they've taught.

Auth: requires SCOTTYLABS_AUTH_TOKEN (see get_course_fces).

Args: instructor: Instructor name, exact-match (use search_instructors). include_all: See get_course_fces. Default False keeps the response tight.

Returns: FCESummary (see get_course_fces).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shivendoo123/scottylabs_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server