Skip to main content
Glama
grantdehoog

penn-course-mcp

by grantdehoog

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PENN_COURSES_HOSTNoHTTP host127.0.0.1
PENN_COURSES_PORTNoHTTP port8000
PENN_COURSES_TIMEOUTNoHTTP timeout (seconds)20.0
PENN_COURSES_BASE_URLNoAPI base URLhttps://penncoursereview.com
PENN_COURSES_SEMESTERNoDefault semester (current auto-resolves)current
PENN_COURSES_CACHE_TTLNoCache TTL (seconds) for catalog/detail data3600
PENN_COURSES_TRANSPORTNostdio or httpstdio
PENN_COURSES_USER_AGENTNoSent with every requestpenn-course-mcp/<ver>
PENN_COURSES_SESSION_COOKIENoEnables detailed reviews (see docs)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_current_semesterA

Return the active semester and whether detailed reviews are enabled.

Useful as a first call to learn the current term code (e.g. '2026C') and the server's review-auth status.

search_coursesA

Search the course catalog by code or keyword (e.g. 'CIS-1200' or 'ethics').

Returns lightweight course summaries including aggregate ratings. semester defaults to the current term.

get_course_detailsC

Get full details for a course: description, prerequisites, attributes, crosslistings, aggregate ratings, and all sections with meeting times.

list_course_sectionsA

List a course's sections with formatted meeting times and instructors.

open_only keeps only sections whose status is open; activity filters by type (e.g. 'LEC', 'REC', 'LAB').

get_course_ratingsB

Return the public aggregate ratings for a course (always available).

Includes course_quality, instructor_quality, difficulty, and work_required.

get_course_reviewsA

Get detailed Penn Course Review breakdowns for a course.

When an authenticated session cookie is configured this returns the full per-instructor review data. Otherwise it gracefully falls back to the public aggregate ratings and reports an unauthenticated status (never errors).

find_courses_by_attributeA

Find courses carrying a given attribute (e.g. 'EUMS', 'MFR', a Gen-Ed code).

match='code' requires an exact attribute-code match; match='description' does a substring search across codes and descriptions. Supply prefilter_query to narrow the candidate set first (faster, smaller payload).

find_courses_by_requirementB

Find courses fulfilling a requirement (pre-NGSS requirement code or name).

Substring-matches against course attributes and pre-NGSS requirement codes/names.

check_schedule_conflictsA

Check a set of section ids (e.g. ['CIS-1200-001','MATH-1400-002']) for time conflicts. Returns the clashing meetings in human-readable form.

build_scheduleA

Assemble a weekly schedule from section ids: total credits, a day-by-day grid, time conflicts, and warnings for missing required companion sections.

compare_coursesB

Compare courses side by side on ratings, difficulty, workload, credits, and prerequisites. Accepts a list of course codes (e.g. ['CIS-1200','CIS-1600']).

recommend_coursesA

Search and rank courses by a quality metric.

sort_by is one of: 'course_quality', 'instructor_quality', 'recommendation_score' (higher is better), or 'difficulty' / 'work_required' (lower is better, for finding lighter courses).

list_schedulesA

List the saved schedules in your Penn Course Plan account (requires auth).

Returns each schedule's id, name, semester, and the section ids it contains — handy for finding a schedule_id to update or delete.

save_scheduleA

Save a schedule to your Penn Course Plan account so it appears on the website.

Creates a new schedule named name containing the given sections (full section ids like 'CIS-1200-001'). Pass an existing schedule_id to overwrite that schedule instead of creating a new one. Writes to your live Penn account and requires PENN_COURSES_SESSION_COOKIE (sessionid + csrftoken).

delete_scheduleA

Delete a saved Penn Course Plan schedule by its id (requires auth).

Use list_schedules to find the id first. This permanently removes the schedule from your Penn Course Plan account.

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/grantdehoog/penn-course-mcp'

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