Skip to main content
Glama
USC WebReg/Course Catalog MCP

USC WebReg/Course Catalog MCP

by shreeyachand

USC WebReg/Course Catalog MCP

USC의 공개 강의 카탈로그 API(classes.usc.edu)를 AI 에이전트에 노출하는 MCP 서버입니다. "정오 이후에 시작하는 화/목요일 GE B 옵션은 무엇이 있나요?" 같은 질문을 할 수 있습니다.

설정

한 번 빌드합니다:

npm install
npm run build

opencode

~/.config/opencode/opencode.jsonc에 추가합니다:

{
  "mcp": {
    "usc-courses": {
      "type": "local",
      "command": ["node", "/absolute/path/to/usc-webreg-mcp/dist/index.js"],
      "enabled": true
    }
  }
}

Claude Code

프로젝트 루트에 .mcp.json을 추가합니다(또는 claude mcp add 실행):

{
  "mcpServers": {
    "usc-courses": {
      "command": "node",
      "args": ["/absolute/path/to/usc-webreg-mcp/dist/index.js"]
    }
  }
}

Related MCP server: Brown Courses MCP Server

도구

도구

설명

list_terms

계절/연도/상태를 포함한 모든 학기 정보

get_term

termCode(예: 20263)로 단일 학기 세부 정보

list_schools

학기별 단과대학/대학 및 해당 프로그램

list_programs

학기별 프로그램(학과) 및 해당 단과대학

get_program

프로그램 세부 정보/참고 사항(D-clearance 정보)

list_course_prefixes

카탈로그의 모든 과목 접두사

list_sessions

수강 신청 세션 및 수강 철회 기한

check_course_exists

카탈로그에 강좌 코드가 존재하는지 여부

get_syllabus_index

학기별 SimpleSyllabus 색인 URL

get_section_fees

sisSectionId 기준 섹션 수강료

search_courses

카탈로그 키워드 검색(코드/제목/설명)

get_course

전체 강좌 기록(모든 섹션, 선수 과목, 제한 사항 포함)

list_courses_by_program

단과대학+프로그램의 모든 강좌

list_ge_requirements

GE 구조(요구 사항 + 카테고리 접두사)

list_courses_by_ge

GE 카테고리를 충족하는 강좌

get_ge_category_details

GE 카테고리의 이름/세부 정보

일정 필터

search_courses, list_courses_by_program, list_courses_by_ge는 선택적 섹션 필터를 허용합니다: days(["Mon","Wed"]), startAfter/startBefore("12:00"), openOnly.

예시: 월+수 정오 이후에 시작하는 GE B 강좌:

list_courses_by_ge(termCode=20263, geRequirementPrefix=ACORELIT,
  geCategoryPrefix=HINQ, days=["Mon","Wed"], startAfter="12:00")

Available Tools

16 tools
check_course_existsA
Read-onlyIdempotent

Check whether a course code exists anywhere in the USC catalog (not limited to a single term). Accepts codes like 'CSCI-103'. Returns true/false.

NameRequiredDescriptionDefault
courseYesCourse code to check, e.g. 'CSCI-103'.
get_courseA
Read-onlyIdempotent

Get the full record for a single USC course in a term by its course code (e.g. 'CSCI-103'). Includes description, units, GE code, prerequisites, corequisites, restrictions, and all sections with schedule, instructor, seats, fees, and syllabus URL. Supports optional section filters (days, startAfter, startBefore, openOnly) applied client-side.

NameRequiredDescriptionDefault
daysNoSection must meet on all of the given days (e.g. ['Mon', 'Wed']). A section matches if any of its schedule entries covers every listed day.
openOnlyNoWhen true, only include sections that are not cancelled and not full (have seats available).
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
courseCodeYes
startAfterNoOnly sections whose start time is at or after this zero-padded HH:MM time (e.g. '12:00').
startBeforeNoOnly sections whose start time is at or before this zero-padded HH:MM time (e.g. '17:00').
get_ge_category_detailsA
Read-onlyIdempotent

Get the name and details of a single General Education (GE) category within a requirement for a term. Useful to confirm what a GE category prefix means (e.g. what 'HINQ' covers).

NameRequiredDescriptionDefault
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
geCategoryPrefixYesGE category prefix from list_ge_requirements (e.g. 'HINQ').
geRequirementPrefixYesGE requirement prefix from list_ge_requirements (e.g. 'ACORELIT').
get_programA
Read-onlyIdempotent

Get details for a single USC program in a term, including program-specific notes (e.g. enrollment or D-clearance instructions). Requires the program's school prefix (find via list_programs) and the program prefix.

NameRequiredDescriptionDefault
schoolYesSchool prefix the program belongs to (e.g. 'ENGV').
programYesProgram/department prefix (e.g. 'CSCI').
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
get_section_feesA
Read-onlyIdempotent

Get the fees for a single course section by its SIS section id (the 'sisSectionId' field on a section, e.g. '29934'). Returns any tuition/fee items attached to the section.

NameRequiredDescriptionDefault
sectionIdYesSIS section id from a section's 'sisSectionId' field.
get_syllabus_indexA
Read-onlyIdempotent

Get the SimpleSyllabus index URL for a term, which can be used to look up published syllabi for that term's sections. Individual sections also carry a 'syllabus' URL directly.

NameRequiredDescriptionDefault
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
get_termA
Read-onlyIdempotent

Get details for a single academic term by its numeric termCode (e.g. 20263 = Fall 2026). Returns season, year, status, and activation date.

NameRequiredDescriptionDefault
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
list_course_prefixesA
Read-onlyIdempotent

List every USC subject prefix in the catalog (e.g. CSCI, MATH, AHIS) across all terms, with its name. Useful for discovering what subjects exist.

NameRequiredDescriptionDefault

No parameters

list_courses_by_geA
Read-onlyIdempotent

List all courses in a term that satisfy a General Education (GE) category, with their sections. Requires the GE requirement prefix and category prefix, which can be discovered via list_ge_requirements (e.g. GE B 'Humanistic Inquiry' = geRequirementPrefix 'ACORELIT', geCategoryPrefix 'HINQ'). Supports optional section filters (days, startAfter, startBefore, openOnly) applied client-side.

NameRequiredDescriptionDefault
daysNoSection must meet on all of the given days (e.g. ['Mon', 'Wed']). A section matches if any of its schedule entries covers every listed day.
openOnlyNoWhen true, only include sections that are not cancelled and not full (have seats available).
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
startAfterNoOnly sections whose start time is at or after this zero-padded HH:MM time (e.g. '12:00').
startBeforeNoOnly sections whose start time is at or before this zero-padded HH:MM time (e.g. '17:00').
geCategoryPrefixYesGE category prefix from list_ge_requirements (e.g. 'HINQ' for GE B Humanistic Inquiry).
geRequirementPrefixYesGE requirement prefix from list_ge_requirements (e.g. 'ACORELIT' for Core Literacies).
list_courses_by_programA
Read-onlyIdempotent

List all courses offered by a USC program (department) in a term. Requires the school prefix and program prefix, which can be discovered via list_programs. For example, Computer Science is school 'ENGV' and program 'CSCI'. Returns courses with their sections. Supports optional section filters (days, startAfter, startBefore, openOnly) applied client-side.

NameRequiredDescriptionDefault
daysNoSection must meet on all of the given days (e.g. ['Mon', 'Wed']). A section matches if any of its schedule entries covers every listed day.
schoolYesSchool prefix the program belongs to (e.g. 'ENGV' for Viterbi). Find via list_programs.
programYesProgram/department prefix (e.g. 'CSCI' for Computer Science).
openOnlyNoWhen true, only include sections that are not cancelled and not full (have seats available).
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
startAfterNoOnly sections whose start time is at or after this zero-padded HH:MM time (e.g. '12:00').
startBeforeNoOnly sections whose start time is at or before this zero-padded HH:MM time (e.g. '17:00').
list_ge_requirementsA
Read-onlyIdempotent

List USC General Education (GE) requirements for a term. Returns the GE structure grouped by requirement era ('Fall2015OrLater' for current students, 'BeforeFall2015' for older catalogs). Each requirement has a prefix and categories with prefixes (e.g. GE B 'Humanistic Inquiry' is category prefix 'HINQ' under requirement 'ACORELIT'). Use the prefixes with list_courses_by_ge.

NameRequiredDescriptionDefault
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
list_programsA
Read-onlyIdempotent

List all USC programs (departments/majors) in a term, each with its prefix, name, and the school prefix(es) it belongs to. Use this to find the school+program pair needed for list_courses_by_program (e.g. Computer Science is program 'CSCI' under school 'ENGV').

NameRequiredDescriptionDefault
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
list_schoolsA
Read-onlyIdempotent

List all USC schools/colleges offering classes in a term, each with its prefix (e.g. 'ENGV' = Viterbi, 'DRNS' = Dornsife) and the programs (departments) it contains. Useful for navigating the catalog structure.

NameRequiredDescriptionDefault
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
list_sessionsA
Read-onlyIdempotent

List USC enrollment sessions (e.g. regular session '001', summer sessions) with their term, session code, description, last drop date, and RNR session id. Useful for understanding session codes shown on sections.

NameRequiredDescriptionDefault

No parameters

list_termsA
Read-onlyIdempotent

List all USC academic terms available in the course catalog, each with season, year, term code, and status. Use this to find the termCode for a given semester (e.g. 20263 = Fall 2026).

NameRequiredDescriptionDefault

No parameters

search_coursesA
Read-onlyIdempotent

Search the USC course catalog for a term by keyword. Matches course codes, titles, and descriptions (e.g. 'machine learning', 'CSCI', 'art history'). Returns matching courses with their sections, including schedule, instructor, and seat availability. Supports optional section filters (days, startAfter, startBefore, openOnly) applied client-side.

NameRequiredDescriptionDefault
daysNoSection must meet on all of the given days (e.g. ['Mon', 'Wed']). A section matches if any of its schedule entries covers every listed day.
openOnlyNoWhen true, only include sections that are not cancelled and not full (have seats available).
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
searchTermYes
startAfterNoOnly sections whose start time is at or after this zero-padded HH:MM time (e.g. '12:00').
startBeforeNoOnly sections whose start time is at or before this zero-padded HH:MM time (e.g. '17:00').

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv0.1.0
    • First observedcheck_course_exists
    • First observedget_course
    • First observedget_ge_category_details
    • First observedget_program
    • First observedget_section_fees
    • First observedget_syllabus_index
    • First observedget_term
    • First observedlist_course_prefixes
    • First observedlist_courses_by_ge
    • First observedlist_courses_by_program
    • First observedlist_ge_requirements
    • First observedlist_programs
    • First observedlist_schools
    • First observedlist_sessions
    • First observedlist_terms
    • First observedsearch_courses

TDQS

A4.2/5.0

Scored across 16 tools

Disambiguation4/5

Most tools cleanly separate listing, detail lookup, and course discovery, but a few overlaps exist: check_course_exists is similar to get_course/search_courses, and the multiple list_courses_* variants all return courses with sections. Descriptions are specific enough that an agent can usually pick correctly, though some boundary cases require close reading.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern: list_* for collections, get_* for single records, and search_courses/check_course_exists as clear special cases. All names are snake_case, and related tools are predictably grouped.

Tool Count4/5

16 tools is slightly above the ideal range but justifiable given the domain's breadth: terms, schools, programs, course prefixes, sessions, GE requirements, fees, and syllabi all need coverage. A couple of tools like check_course_exists or get_syllabus_index feel auxiliary, but they do not make the set bloated.

Completeness4/5

The catalog surface is well covered: term navigation, program/school structure, course search and detail, GE lookup, sections, fees, sessions, and syllabi are all represented. Minor gaps include lack of a direct single-section lookup, no search by instructor, and no registration/enrollment actions, but for a read-only catalog the core workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers