io.github.avivkeller/umd-mcp
NPM · UMD-MCP
MCP server exposing University of Maryland data
Available components
Last scanned (21 hours ago)
Scores higher than 68% of npm servers
Category Education and Research
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 65 of 218 dependencies flagged as unhealthy (3 deprecated). View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 22 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability82
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 9284 tokens (~92/item across 100 items; 100 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
- Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (99% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 100 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 100 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Oct 26 +6
- Stability: unverified → 0.40 ▲ functional
- 1 Oct 26 71
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed npm/umd-mcp@0.0.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 218 packages
| Packages resolved | 218 |
|---|---|
| Deprecated | 3 |
| Stale | 64 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
athletics_get_article Get article ~52
The full text of a Maryland Athletics news story (game recaps, previews, announcements) by story id. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| story_id | integer | yes | Story id from athletics_get_news or a game |
| Name | Type | Req | Description |
|---|---|---|---|
| byline | string|null | yes | – |
| content | string | yes | Story body as plain text |
| date | string | yes | Published, ISO 8601 in US Eastern time |
| id | integer | yes | Story id to pass to athletics_get_article |
| image_url | string|null | yes | – |
| links | array | yes | Related links the story carries |
| sport | string|null | yes | e.g. "Football" |
| sport_id | – | yes | – |
| subheadline | string|null | yes | – |
| teaser | string|null | yes | Plain-text teaser |
| title | string | yes | – |
| url | string | yes | Story page |
No examples provided.
athletics_get_calendar Get calendar ~91
Every Maryland game or event in a date range across all sports (or one sport), grouped by day, with opponents, venues, media links and results. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | First day of the range |
| sport_id | integer | – | Sport id from athletics_list_sports, e.g. 3 for Football |
| to | string | yes | Last day of the range |
| Name | Type | Req | Description |
|---|---|---|---|
| days | array | yes | Days with at least one event |
No examples provided.
athletics_get_coaches Get coaches ~53
A Maryland team's coaching staff with titles, email, phone and bio page links. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| sport_id | integer | yes | Sport id from athletics_list_sports, e.g. 3 for Football |
| Name | Type | Req | Description |
|---|---|---|---|
| coaches | array | yes | Head coach first |
No examples provided.
athletics_get_game Get game ~47
One Maryland game by id (from athletics_get_schedule or athletics_get_calendar): opponent, venue, media links and result. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| game_id | integer | yes | Game id |
| Name | Type | Req | Description |
|---|---|---|---|
| at_or_vs | string|null | yes | "at" or "vs" |
| conference_game | boolean | yes | – |
| date | string | yes | Game date in US Eastern time |
| facility | string|null | yes | Venue name, e.g. "SECU Stadium" |
| id | integer | yes | Game id to pass to athletics_get_game |
| location | string|null | yes | City, e.g. "College Park, MD" |
| media | object | yes | – |
| opponent | – | yes | – |
| preview_story_id | – | yes | Pass to athletics_get_article |
| recap_story_id | – | yes | Pass to athletics_get_article |
| result | – | yes | null until the game has been played |
| sport | – | yes | – |
| starts_at | string|null | yes | Start as an ISO 8601 UTC timestamp |
| state | string|null | yes | Site game state, e.g. "SCHEDULED", "GAMECOMPLETE" |
| status | string | yes | – |
| time | string|null | yes | Start time as printed, e.g. "8 PM"; null when TBA |
| tournament | string|null | yes | Tournament name when part of one |
| type | string | yes | "regular_season", "exhibition", "postseason" or the site's own code |
| venue | string | yes | – |
No examples provided.
athletics_get_live_scores Get live scores ~38
Maryland games in progress right now with their live scores, as the site reports them; empty when nothing is being played. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| games | array | yes | Live games exactly as the site's LiveStats feed returns them; empty when none |
No examples provided.
athletics_get_news Get news ~104
Latest Maryland Athletics news stories, newest first, optionally for one sport. Pass a story id to athletics_get_article for the full text. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, starting at 1 (default 1) |
| page_size | integer | – | Maximum number of records to return, 1-50 (default 10) |
| sport_id | integer | – | Sport id from athletics_list_sports, e.g. 3 for Football |
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | yes | Number of pages at this page size |
| stories | array | yes | Stories on the requested page, newest first |
| total | integer | yes | Total stories matching |
No examples provided.
athletics_get_roster Get roster ~65
A Maryland team's current roster: players with jersey number, position, class, height, weight, hometown and major, plus the coaching staff. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| sport_id | integer | yes | Sport id from athletics_list_sports, e.g. 3 for Football |
| Name | Type | Req | Description |
|---|---|---|---|
| coaches | array | yes | – |
| id | integer | yes | – |
| players | array | yes | – |
| season | string|null | yes | – |
| sport | – | yes | – |
| title | string | yes | e.g. "2026 Football Roster" |
No examples provided.
athletics_get_schedule Get schedule ~115
A Maryland team's schedule and results: every game with date, time, opponent, venue, TV/streaming, and the score once played, plus the team's record. Defaults to the current season; pass a schedule id from athletics_list_seasons for a past one. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| season_schedule_id | integer | – | Schedule id of a past season from athletics_list_seasons (default: current season) |
| sport_id | integer | yes | Sport id from athletics_list_sports, e.g. 3 for Football |
| Name | Type | Req | Description |
|---|---|---|---|
| conference | string|null | yes | e.g. "Big Ten" |
| games | array | yes | Games in date order |
| id | integer | yes | Schedule id |
| record | object | yes | – |
| season | string|null | yes | e.g. "2026" or "2025-26" |
| sport | – | yes | – |
| title | string | yes | e.g. "2026 Football Schedule" |
No examples provided.
athletics_get_upcoming_events Get upcoming events ~79
A Maryland team's next few games with date, time, opponent, venue and where to watch. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-20 (default 5) |
| sport_id | integer | yes | Sport id from athletics_list_sports, e.g. 3 for Football |
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | yes | Soonest first |
No examples provided.
athletics_list_seasons List seasons ~63
Past and current seasons a sport has a schedule for, with the schedule id to pass to athletics_get_schedule for a past season. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| sport_id | integer | yes | Sport id from athletics_list_sports, e.g. 3 for Football |
| Name | Type | Req | Description |
|---|---|---|---|
| seasons | array | yes | Newest season first |
No examples provided.
athletics_list_sports List sports ~38
Every varsity sport at Maryland (the Terps, umterps.com) with the ids the other athletics tools take. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| sports | array | yes | Varsity sports in site order |
No examples provided.
athletics_search_players Search players ~102
Find current and former Maryland athletes by last name, across all seasons on umterps.com, optionally within one sport. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| last_name | string | yes | Start of the last name, e.g. "Lock" or just "L" |
| page | integer | – | Page number, starting at 1 (default 1) |
| sport_id | integer | – | Sport id from athletics_list_sports, e.g. 3 for Football |
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | yes | Number of pages of matches |
| players | array | yes | Matches in alphabetical order |
| total | integer | yes | Total matches, across all pages |
No examples provided.
calendar_get_academic_calendar Get academic calendar ~112
The approved UMD semester calendars from the Office of the Provost: first and last day of classes, breaks, reading day, final exams, commencement and summer sessions for each academic year, several years ahead. Dates are as printed (no year; the season and academic year give it). No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| year | string | – | Only academic years whose name contains this text, e.g. "2027" or "Fall 2026 - Summer 2027" (default: all) |
| Name | Type | Req | Description |
|---|---|---|---|
| years | array | yes | Academic years in the order the provost lists them |
No examples provided.
calendar_get_event Get a campus event ~78
One event from the UMD campus calendar by id or slug, with its full description, location, contact and recurrence rule. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | – | Event id from calendar_search_events |
| slug | string | – | URL slug, e.g. "terps-after-dark-3"; used when id is not given |
| Name | Type | Req | Description |
|---|---|---|---|
| all_day | boolean | yes | – |
| audiences | array | yes | Audience categories (unknown new ones are dropped) |
| calendar | string | yes | Which of the site's calendars the event is in |
| contact | object | yes | – |
| description | string|null | yes | Full description as plain text |
| end | string | yes | ISO 8601 with the America/New_York offset, e.g. "2026-10-01T14:00:00-04:00" |
| event_types | array | yes | Event-type categories (unknown new ones are dropped) |
| featured | boolean | yes | true when the site marks the event as featured |
| id | integer | yes | Event id to pass to calendar_get_event |
| image_url | string|null | yes | Hero image; append ?w=&h=&fit=crop to resize |
| location | object | yes | – |
| multi_day | boolean | yes | – |
| posted | string|null | yes | When the event was published, e.g. "2026-08-27 10:49:00" |
| recurrence | – | yes | Recurrence rule; null for a one-off event |
| slug | string | yes | URL slug; also accepted by calendar_get_event |
| start | string | yes | ISO 8601 with the America/New_York offset, e.g. "2026-10-01T14:00:00-04:00" |
| summary | string|null | yes | Short blurb as plain text |
| tags | array | yes | – |
| title | string | yes | – |
| url | string | yes | Public page on calendar.umd.edu |
No examples provided.
calendar_list_categories List event categories ~39
The event-type, audience and status categories the UMD campus calendar files events under, with the slugs calendar_search_events accepts. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | yes | Categories in the order the site lists them |
No examples provided.
calendar_search_events Search campus events ~203
Events on the UMD campus calendar (calendar.umd.edu) in a date range, optionally narrowed by full-text query, event type, audience or featured status. Recurring events are expanded into occurrences. Returns the total so the caller can page with offset. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| audience | string | – | Only events for this audience |
| end | string | – | Only events on or before this date (default: no limit) |
| event_type | string | – | Only events of this type |
| featured | boolean | – | Only featured events when true |
| limit | integer | – | Maximum number of records to return, 1-100 (default 10) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| query | string | – | Full-text search over title and body, plain words, e.g. "gis" |
| start | string | – | Only events on or after this date (default: today) |
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | yes | Events in start-date order |
| total | integer | yes | Events matching the filters, across all pages |
No examples provided.
dining_get_busy_meter Get dining hall busy meter ~71
Current crowd level (less, moderately or extremely busy) of the three UMD dining halls, from the service behind the "Dining Hall Status" page. The service has been returning errors; when it does, `available` is false and the UMD mobile app is the alternative. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| available | boolean | yes | false when the crowd-level service did not answer |
| halls | array | yes | Crowd level per dining hall; empty when unavailable |
| reason | string|null | yes | Why it is unavailable; null when available |
No examples provided.
dining_get_calendar Get dining calendar ~42
Key dates for the current semester from UMD Dining Services: when dining plans go live, holiday and break hours, closures and Dining Dollar expiry. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | yes | Events in the order the page lists them |
| title | string|null | yes | The calendar heading, e.g. "Fall 2026 - Subject to Change" |
No examples provided.
dining_get_news Get dining news ~57
The newest posts on dining.umd.edu, mainly "The Dish" monthly newsletter, from its RSS feed. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-10 (default 10) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Newest first |
No examples provided.
directory_get_person Get a person ~80
Look up one person in the UMD campus directory by Directory ID (the part of their email before @umd.edu). No login needed for faculty, staff and affiliates; students are only found after login.
| Name | Type | Req | Description |
|---|---|---|---|
| directory_id | string | yes | UMD Directory ID (the part of the email before @umd.edu), e.g. "djpines" |
| Name | Type | Req | Description |
|---|---|---|---|
| person | – | yes | The person, or null when the directory has no match |
No examples provided.
directory_search Search the directory ~125
Search the UMD campus directory for people by last name (prefix; "Pin*" wildcards work), full name, email address, Directory ID or phone number. No login needed for faculty, staff and affiliates (at most 50 results); after login students are included and up to 100 are returned.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Last name, full name, email, Directory ID or phone number, e.g. "Pines" |
| sounds_like | boolean | – | Also match last names that sound like the query, e.g. "Pynes" for Pines |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of people returned |
| limit_reached | boolean | yes | true when the directory capped the results (50 anonymously, 100 signed in); narrow the search to see the rest |
| message | string|null | yes | Notice the directory showed instead of results, e.g. "No users found"; null otherwise |
| people | array | yes | Matching people in the order the directory lists them |
No examples provided.
directory_search_advanced Advanced directory search ~196
Search the UMD campus directory by separate name parts, email, work phone, department, affiliation and institution. At least one of the name, email or phone fields is required; department only narrows another field. No login needed for faculty, staff and affiliates; students are only included after login.
| Name | Type | Req | Description |
|---|---|---|---|
| affiliations | array | – | Affiliations to include (default: faculty, staff and affiliate, plus student when signed in) |
| department | string | – | Department name to narrow by, e.g. "Computer Science" |
| string | – | Email address | |
| first_name | string | – | First name |
| institutions | array | – | Institutions to include (default: UMCP only) |
| last_name | string | – | Last name (prefix match) |
| middle_name | string | – | Middle name |
| phone | string | – | Work phone, digits or dashed, e.g. "301-405-5803" |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of people returned |
| limit_reached | boolean | yes | true when the directory capped the results (50 anonymously, 100 signed in); narrow the search to see the rest |
| message | string|null | yes | Notice the directory showed instead of results, e.g. "No users found"; null otherwise |
| people | array | yes | Matching people in the order the directory lists them |
No examples provided.
elms_get_activity_stream Get ELMS activity stream ~61
Recent activity across the signed-in student's active ELMS (Canvas) courses: new announcements, discussion posts, grades and messages. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-50 (default 20) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Newest first |
No examples provided.
elms_get_conversation Get an ELMS conversation ~45
One ELMS (Canvas) Inbox conversation with every message in it. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | integer | yes | Conversation id, from elms_list_conversations |
| Name | Type | Req | Description |
|---|---|---|---|
| context | string|null | yes | Course the conversation belongs to, if any |
| id | integer | yes | Conversation id, for elms_get_conversation |
| last_message | string|null | yes | – |
| last_message_at | string|null | yes | ISO 8601 timestamp (UTC); null when unset |
| message_count | integer | yes | – |
| messages | array | yes | Messages, newest first as Canvas orders them |
| participants | array | yes | Participant names |
| starred | boolean | yes | – |
| state | string | yes | – |
| subject | string|null | yes | – |
No examples provided.
elms_get_course Get an ELMS course ~76
One ELMS (Canvas) course with its syllabus, front page and the navigation tabs enabled for it, so you know which of assignments, modules, announcements, files or external tools (Zoom, Piazza, Gradescope) exist. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | integer | yes | Canvas course id, from elms_list_courses |
| Name | Type | Req | Description |
|---|---|---|---|
| course_code | string|null | yes | e.g. "CMSC131-0101-Fall 2026" |
| end_at | string|null | yes | ISO 8601 timestamp (UTC); null when unset |
| enrollment_type | – | yes | The user's role in the course |
| front_page | – | yes | The course front page; null when the course has none |
| grades | – | yes | Current standing; null when the course hides grades |
| hide_final_grades | boolean | yes | – |
| id | integer | yes | Canvas course id, used by the other ELMS tools |
| name | string | yes | – |
| start_at | string|null | yes | ISO 8601 timestamp (UTC); null when unset |
| state | string | yes | Publication state |
| syllabus | string|null | yes | Syllabus body, converted from HTML to plain text; null when empty |
| tabs | array | yes | Navigation tabs enabled for the course, in order |
| teachers | array | yes | – |
| term | – | yes | – |
| url | string | yes | Course home page |
No examples provided.
elms_get_grades Get ELMS grades ~57
The signed-in student's current and final scores in every ELMS (Canvas) course they are enrolled in, or in one course. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | integer | – | Only this course (default: all enrollments) |
| Name | Type | Req | Description |
|---|---|---|---|
| enrollments | array | yes | – |
No examples provided.
elms_get_planner Get ELMS planner ~104
Everything due or happening for the signed-in student across all ELMS (Canvas) courses in a date range (default: the next 14 days): assignments, quizzes, announcements, events and notes, with submission status. The best single "what's due" feed. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Last day to include (default: 14 days from today) |
| start_date | string | – | First day to include (default: today) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | In date order |
No examples provided.
elms_get_submission Get an ELMS submission ~72
The signed-in student's submission for one ELMS (Canvas) assignment: status, score, grade and any instructor comments. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| assignment_id | integer | yes | Canvas assignment id, from elms_list_assignments |
| course_id | integer | yes | Canvas course id, from elms_list_courses |
| Name | Type | Req | Description |
|---|---|---|---|
| attempt | – | yes | – |
| comments | array | yes | Instructor and student comments, when requested |
| excused | boolean | yes | – |
| grade | string|null | yes | – |
| graded_at | string|null | yes | ISO 8601 timestamp (UTC); null when unset |
| late | boolean | yes | – |
| missing | boolean | yes | – |
| score | number|null | yes | – |
| state | string | yes | – |
| submitted_at | string|null | yes | ISO 8601 timestamp (UTC); null when unset |
| url | string|null | yes | Preview link for the submission |
No examples provided.
elms_get_todo Get ELMS to-do list ~39
Assignments the signed-in student still needs to submit, as ELMS (Canvas) lists them in the to-do sidebar. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
No examples provided.
elms_get_upcoming_events Get ELMS upcoming events ~38
Upcoming calendar events and assignment due dates across all ELMS (Canvas) courses, as the Canvas dashboard shows them. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | yes | – |
No examples provided.
elms_list_announcements List ELMS announcements ~92
Announcements posted in one or more ELMS (Canvas) courses within a date window (default: the last 14 days). Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| course_ids | array | yes | Courses to read announcements from, up to 20 |
| end_date | string | – | Latest post date (default: today) |
| start_date | string | – | Earliest post date (default: 14 days ago) |
| Name | Type | Req | Description |
|---|---|---|---|
| announcements | array | yes | Newest first |
No examples provided.
elms_list_assignments List ELMS assignments ~89
Assignments in an ELMS (Canvas) course, ordered by due date, each with the signed-in student's submission status and score. Narrow with a bucket such as "upcoming" or "unsubmitted". Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| bucket | string | – | Only assignments in this bucket (default: all) |
| course_id | integer | yes | Canvas course id, from elms_list_courses |
| Name | Type | Req | Description |
|---|---|---|---|
| assignments | array | yes | – |
No examples provided.
elms_list_conversations List ELMS conversations ~74
The signed-in student's ELMS (Canvas) Inbox: conversations with their subject, participants and last message. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-100 (default 20) |
| scope | string | – | Which Inbox folder to list (default "inbox") |
| Name | Type | Req | Description |
|---|---|---|---|
| conversations | array | yes | Most recent first |
No examples provided.
elms_list_courses List ELMS courses ~70
The signed-in student's courses on ELMS (Canvas) with term, instructors and current grade standing. Course ids are what the other ELMS tools take. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| state | string | – | "active" for current courses, "completed" for past terms, "all" for both |
| Name | Type | Req | Description |
|---|---|---|---|
| courses | array | yes | Courses as Canvas orders them |
No examples provided.
elms_list_modules List ELMS modules ~73
The modules of an ELMS (Canvas) course with their items (assignments, files, pages, links) and completion state. File items carry the link to lecture slides even when the Files tab is hidden. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | integer | yes | Canvas course id, from elms_list_courses |
| Name | Type | Req | Description |
|---|---|---|---|
| modules | array | yes | Modules in course order |
No examples provided.
elms_whoami Who am I on ELMS ~37
The signed-in user as ELMS (Canvas) knows them: name, login id, email and time zone. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| avatar_url | string|null | yes | – |
| string|null | yes | – | |
| id | integer | yes | Canvas user id |
| login_id | string|null | yes | UMD Directory ID; null if Canvas hides it |
| name | string | yes | – |
| short_name | string|null | yes | – |
| sortable_name | string|null | yes | "Last, First" |
| time_zone | string|null | yes | e.g. "America/New_York" |
No examples provided.
login Sign in to UMD ~111
Sign in with a UMD Directory ID. Opens a dedicated browser window (Chrome or Edge) at the UMD login page and waits up to 5 minutes for the user to finish, including Duo; the window closes by itself afterwards. The same sign-in also establishes sessions with every service other tools need (e.g. Testudo). Some services force re-authentication, so expect a prompt even if the user signed in recently. Call this when another tool reports that sign-in is required or a session has expired.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| attributes | object | yes | Attributes the IdP released about the user, e.g. mail, displayName, eduPersonAffiliation |
| services | array | yes | Single sign-on services other tools depend on, and whether each is signed in |
| user | string | yes | UMD Directory ID of the signed-in user, e.g. "jsmith" |
No examples provided.
logout Sign out of UMD ~30
Forget the signed-in user and every service session, and clear the sign-in browser so the next login prompts again.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
nutrition_get_menu Get a dining hall menu ~92
What a UMD dining hall is serving on a given day, by meal period and station, with allergens and dietary labels for each dish, from nutrition.umd.edu. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Day to get the menu for, as YYYY-MM-DD (default: today). Menus are posted about a week ahead. |
| hall | string | yes | Dining hall to get the menu for |
| Name | Type | Req | Description |
|---|---|---|---|
| meals | array | yes | Meal periods served that day, in order; empty if no menu is posted for that date |
No examples provided.
nutrition_get_recipe Get a recipe's nutrition label ~72
The nutrition label for a dish on a UMD dining hall menu: serving size, calories, nutrition facts with daily values, ingredients and allergens. Use the id from nutrition_get_menu. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Recipe identifier from a menu item, e.g. "060064*2" |
| Name | Type | Req | Description |
|---|---|---|---|
| allergens | array | yes | Allergens the label declares, e.g. "gluten", "soybeans", "sesame"; empty if none |
| calories | integer | yes | Calories per serving |
| id | string | yes | Recipe identifier, e.g. "060064*2" |
| ingredients | array | yes | Ingredients in order of predominance, each keeping its sub-ingredients in parentheses, e.g. "Tofu (Water, Soybeans, Calcium Sulfate)" |
| name | string | yes | Name of the dish, e.g. "Bacon" |
| nutrients | array | yes | Nutrition facts per serving, in the order the label lists them |
| serving_size | string | yes | Serving size as printed, e.g. "2 ea" or "4 oz" |
No examples provided.
planetterp_get_course Get a course ~74
Look up a UMD course by its code on PlanetTerp. Returns catalog information, the average GPA, professors who have taught it, and student reviews written for it. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| course | string | yes | Course id, e.g. "CMSC131" or "ENGL101X" |
| Name | Type | Req | Description |
|---|---|---|---|
| average_gpa | number|null | yes | Average GPA across all recorded sections, on a 4.0 scale; null if no grade data |
| course_number | string | yes | Course number within the department, e.g. "131" |
| credits | – | yes | Number of credits the course is worth; null if unknown |
| department | string | yes | Four-letter department code, e.g. "CMSC" |
| description | string|null | yes | Catalog description of the course, which may contain HTML tags; null if none |
| name | string | yes | Full course code, e.g. "CMSC131" |
| professors | array | yes | Names of professors who have taught this course; a name repeats once per section taught |
| reviews | array | yes | Student reviews of professors, written for this course |
| title | string|null | yes | Course title, e.g. "Object-Oriented Programming I"; null if unknown |
No examples provided.
planetterp_get_grades Get grades ~175
Grade distributions from PlanetTerp for a course, a professor, or both, broken down by section. At least one of course or professor is required; semester and section narrow the result. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| course | string | – | Only include grades for this course, e.g. "MATH140" |
| professor | string | – | Only include grades for sections taught by this professor, e.g. "Jon Snow" |
| section | string | – | Only include this section, e.g. "101" or "0101" (default: all sections) |
| semester | string | – | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| grades | array | yes | One entry per section matching the query |
No examples provided.
planetterp_get_professor Get a professor ~65
Look up a UMD professor or teaching assistant by name on PlanetTerp. Returns the courses they have taught, their average rating, and student reviews. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name of the professor, e.g. "Jon Snow" |
| Name | Type | Req | Description |
|---|---|---|---|
| average_rating | number|null | yes | Average student rating, on a 1-5 scale; null if the professor has no reviews |
| courses | array | yes | Courses this professor has taught; a code repeats once per section taught |
| name | string | yes | Name of the professor |
| reviews | array | yes | Student reviews of this professor |
| slug | string | yes | PlanetTerp's unique identifier for the professor; their page is https://planetterp.com/professor/<slug> |
| type | string | yes | "ta" if this person is a teaching assistant, "professor" otherwise |
No examples provided.
planetterp_list_courses List courses ~101
List UMD courses on PlanetTerp in alphabetical order, optionally within one department. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| department | string | – | Only list courses in this four-letter department, e.g. "CMSC" (default: all departments) |
| limit | integer | – | Maximum number of records to return, 1-100 (default 100) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| Name | Type | Req | Description |
|---|---|---|---|
| courses | array | yes | Courses matching the query |
No examples provided.
planetterp_list_professors List professors ~96
List UMD professors and teaching assistants on PlanetTerp in alphabetical order. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-100 (default 100) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| type | string | – | Only list professors ("professor") or teaching assistants ("ta"); default: both |
| Name | Type | Req | Description |
|---|---|---|---|
| professors | array | yes | Professors matching the query |
No examples provided.
planetterp_search Search ~127
Search PlanetTerp for courses and professors whose code or name contains the query, as the site search bar does. Use this to find the exact course code or professor name before calling planetterp_get_course or planetterp_get_professor. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-100 (default 30) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| query | string | yes | Text to search for, e.g. "CMSC13" or "Snow" |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | yes | Courses and professors matching the query |
No examples provided.
recwell_get_facility Get a facility ~69
A RecWell facility's page: description, regular hours of operation per season (one tab per semester, as tables), access rules, rental and parking information. For today's actual hours use get_facility_hours. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| facility | string | yes | Which facility page to read |
| Name | Type | Req | Description |
|---|---|---|---|
| sections | array | yes | Content sections in page order |
| title | string | yes | Page title |
| url | string | yes | Page URL |
No examples provided.
recwell_get_facility_alerts Get facility alerts ~41
Current RecWell facility alerts: holiday and reduced hours, closures and protocol changes, as headed sections with any hours tables. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| sections | array | yes | Content sections in page order |
| title | string | yes | Page title |
| url | string | yes | Page URL |
No examples provided.
recwell_get_group_fitness_schedule Get group fitness schedule ~79
The weekly RecWell group fitness class schedule: class, location, instructor, start and end time and registration link, optionally for one weekday. Registration opens 24 hours before a class and needs the free Group Fitness membership. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| day | string | – | Only classes on this weekday (default: the whole week) |
| Name | Type | Req | Description |
|---|---|---|---|
| classes | array | yes | Classes in the order the site lists them |
No examples provided.
recwell_list_club_sports List club sports ~44
Every RecWell club sport with its website, contact email and donation page. Joining means emailing the club and registering on IMLeagues. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| clubs | array | yes | Clubs in alphabetical order |
No examples provided.
How do I install the io.github.avivkeller/umd-mcp server?
io.github.avivkeller/umd-mcp runs locally as an npm package, launched with npx -y umd-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · umd-mcp
claude mcp add avivkeller-umd-mcp -- npx -y umd-mcp
What is the io.github.avivkeller/umd-mcp server?
io.github.avivkeller/umd-mcp is listed in the public MCP registry as io.github.avivkeller/umd-mcp. MCP server exposing University of Maryland data. This page covers its npm package (umd-mcp).
Is the io.github.avivkeller/umd-mcp server safe to use?
io.github.avivkeller/umd-mcp scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.avivkeller/umd-mcp server expose?
io.github.avivkeller/umd-mcp exposes 100 tools: login, logout, whoami, planetterp_get_course, planetterp_list_courses, and 95 more. Their descriptions and schemas cost roughly 9,284 tokens of context every time the server is loaded.
Is the io.github.avivkeller/umd-mcp server still maintained?
io.github.avivkeller/umd-mcp is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.avivkeller/umd-mcp server under?
io.github.avivkeller/umd-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.