penn-course-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PENN_COURSES_HOST | No | HTTP host | 127.0.0.1 |
| PENN_COURSES_PORT | No | HTTP port | 8000 |
| PENN_COURSES_TIMEOUT | No | HTTP timeout (seconds) | 20.0 |
| PENN_COURSES_BASE_URL | No | API base URL | https://penncoursereview.com |
| PENN_COURSES_SEMESTER | No | Default semester (current auto-resolves) | current |
| PENN_COURSES_CACHE_TTL | No | Cache TTL (seconds) for catalog/detail data | 3600 |
| PENN_COURSES_TRANSPORT | No | stdio or http | stdio |
| PENN_COURSES_USER_AGENT | No | Sent with every request | penn-course-mcp/<ver> |
| PENN_COURSES_SESSION_COOKIE | No | Enables detailed reviews (see docs) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| 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
| Name | Description |
|---|---|
| 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. |
| 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.
|
| 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).
|
| 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.
|
| 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 |
| save_scheduleA | Save a schedule to your Penn Course Plan account so it appears on the website. Creates a new schedule named |
| delete_scheduleA | Delete a saved Penn Course Plan schedule by its id (requires auth). Use |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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