Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.avivkeller/umd-mcp

NPM · UMD-MCP

MCP server exposing University of Maryland data

Available components

+3 this week 81 Trust /100

Last scanned (21 hours ago)

Scores higher than 68% of npm servers

Category Education and Research

Trust breakdown (7 categories)

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
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
Changelog

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.

Diagnostics

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 →

MCP tools · 100 exposed · ~9,284 tokens

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 →

Tool Tokens
athletics_get_article ~52

The full text of a Maryland Athletics news story (game recaps, previews, announcements) by story id. No login needed.

NameTypeReqDescription
story_idintegeryesStory id from athletics_get_news or a game
NameTypeReqDescription
bylinestring|nullyes–
contentstringyesStory body as plain text
datestringyesPublished, ISO 8601 in US Eastern time
idintegeryesStory id to pass to athletics_get_article
image_urlstring|nullyes–
linksarrayyesRelated links the story carries
sportstring|nullyese.g. "Football"
sport_id–yes–
subheadlinestring|nullyes–
teaserstring|nullyesPlain-text teaser
titlestringyes–
urlstringyesStory page

No examples provided.

athletics_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.

NameTypeReqDescription
fromstringyesFirst day of the range
sport_idinteger–Sport id from athletics_list_sports, e.g. 3 for Football
tostringyesLast day of the range
NameTypeReqDescription
daysarrayyesDays with at least one event

No examples provided.

athletics_get_coaches ~53

A Maryland team's coaching staff with titles, email, phone and bio page links. No login needed.

NameTypeReqDescription
sport_idintegeryesSport id from athletics_list_sports, e.g. 3 for Football
NameTypeReqDescription
coachesarrayyesHead coach first

No examples provided.

athletics_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.

NameTypeReqDescription
game_idintegeryesGame id
NameTypeReqDescription
at_or_vsstring|nullyes"at" or "vs"
conference_gamebooleanyes–
datestringyesGame date in US Eastern time
facilitystring|nullyesVenue name, e.g. "SECU Stadium"
idintegeryesGame id to pass to athletics_get_game
locationstring|nullyesCity, e.g. "College Park, MD"
mediaobjectyes–
opponent–yes–
preview_story_id–yesPass to athletics_get_article
recap_story_id–yesPass to athletics_get_article
result–yesnull until the game has been played
sport–yes–
starts_atstring|nullyesStart as an ISO 8601 UTC timestamp
statestring|nullyesSite game state, e.g. "SCHEDULED", "GAMECOMPLETE"
statusstringyes–
timestring|nullyesStart time as printed, e.g. "8 PM"; null when TBA
tournamentstring|nullyesTournament name when part of one
typestringyes"regular_season", "exhibition", "postseason" or the site's own code
venuestringyes–

No examples provided.

athletics_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.

NameTypeReqDescription
gamesarrayyesLive games exactly as the site's LiveStats feed returns them; empty when none

No examples provided.

athletics_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.

NameTypeReqDescription
pageinteger–Page number, starting at 1 (default 1)
page_sizeinteger–Maximum number of records to return, 1-50 (default 10)
sport_idinteger–Sport id from athletics_list_sports, e.g. 3 for Football
NameTypeReqDescription
pagesintegeryesNumber of pages at this page size
storiesarrayyesStories on the requested page, newest first
totalintegeryesTotal stories matching

No examples provided.

athletics_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.

NameTypeReqDescription
sport_idintegeryesSport id from athletics_list_sports, e.g. 3 for Football
NameTypeReqDescription
coachesarrayyes–
idintegeryes–
playersarrayyes–
seasonstring|nullyes–
sport–yes–
titlestringyese.g. "2026 Football Roster"

No examples provided.

athletics_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.

NameTypeReqDescription
season_schedule_idinteger–Schedule id of a past season from athletics_list_seasons (default: current season)
sport_idintegeryesSport id from athletics_list_sports, e.g. 3 for Football
NameTypeReqDescription
conferencestring|nullyese.g. "Big Ten"
gamesarrayyesGames in date order
idintegeryesSchedule id
recordobjectyes–
seasonstring|nullyese.g. "2026" or "2025-26"
sport–yes–
titlestringyese.g. "2026 Football Schedule"

No examples provided.

athletics_get_upcoming_events ~79

A Maryland team's next few games with date, time, opponent, venue and where to watch. No login needed.

NameTypeReqDescription
limitinteger–Maximum number of records to return, 1-20 (default 5)
sport_idintegeryesSport id from athletics_list_sports, e.g. 3 for Football
NameTypeReqDescription
eventsarrayyesSoonest first

No examples provided.

athletics_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.

NameTypeReqDescription
sport_idintegeryesSport id from athletics_list_sports, e.g. 3 for Football
NameTypeReqDescription
seasonsarrayyesNewest season first

No examples provided.

athletics_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.

NameTypeReqDescription
sportsarrayyesVarsity sports in site order

No examples provided.

athletics_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.

NameTypeReqDescription
last_namestringyesStart of the last name, e.g. "Lock" or just "L"
pageinteger–Page number, starting at 1 (default 1)
sport_idinteger–Sport id from athletics_list_sports, e.g. 3 for Football
NameTypeReqDescription
pagesintegeryesNumber of pages of matches
playersarrayyesMatches in alphabetical order
totalintegeryesTotal matches, across all pages

No examples provided.

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.

NameTypeReqDescription
yearstring–Only academic years whose name contains this text, e.g. "2027" or "Fall 2026 - Summer 2027" (default: all)
NameTypeReqDescription
yearsarrayyesAcademic years in the order the provost lists them

No examples provided.

calendar_get_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.

NameTypeReqDescription
idinteger–Event id from calendar_search_events
slugstring–URL slug, e.g. "terps-after-dark-3"; used when id is not given
NameTypeReqDescription
all_daybooleanyes–
audiencesarrayyesAudience categories (unknown new ones are dropped)
calendarstringyesWhich of the site's calendars the event is in
contactobjectyes–
descriptionstring|nullyesFull description as plain text
endstringyesISO 8601 with the America/New_York offset, e.g. "2026-10-01T14:00:00-04:00"
event_typesarrayyesEvent-type categories (unknown new ones are dropped)
featuredbooleanyestrue when the site marks the event as featured
idintegeryesEvent id to pass to calendar_get_event
image_urlstring|nullyesHero image; append ?w=&h=&fit=crop to resize
locationobjectyes–
multi_daybooleanyes–
postedstring|nullyesWhen the event was published, e.g. "2026-08-27 10:49:00"
recurrence–yesRecurrence rule; null for a one-off event
slugstringyesURL slug; also accepted by calendar_get_event
startstringyesISO 8601 with the America/New_York offset, e.g. "2026-10-01T14:00:00-04:00"
summarystring|nullyesShort blurb as plain text
tagsarrayyes–
titlestringyes–
urlstringyesPublic page on calendar.umd.edu

No examples provided.

calendar_list_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.

NameTypeReqDescription
categoriesarrayyesCategories in the order the site lists them

No examples provided.

calendar_search_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.

NameTypeReqDescription
audiencestring–Only events for this audience
endstring–Only events on or before this date (default: no limit)
event_typestring–Only events of this type
featuredboolean–Only featured events when true
limitinteger–Maximum number of records to return, 1-100 (default 10)
offsetinteger–Number of records to skip, for pagination (default 0)
querystring–Full-text search over title and body, plain words, e.g. "gis"
startstring–Only events on or after this date (default: today)
NameTypeReqDescription
eventsarrayyesEvents in start-date order
totalintegeryesEvents matching the filters, across all pages

No examples provided.

dining_get_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.

NameTypeReqDescription
availablebooleanyesfalse when the crowd-level service did not answer
hallsarrayyesCrowd level per dining hall; empty when unavailable
reasonstring|nullyesWhy it is unavailable; null when available

No examples provided.

dining_get_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.

NameTypeReqDescription
eventsarrayyesEvents in the order the page lists them
titlestring|nullyesThe calendar heading, e.g. "Fall 2026 - Subject to Change"

No examples provided.

dining_get_news ~57

The newest posts on dining.umd.edu, mainly "The Dish" monthly newsletter, from its RSS feed. No login needed.

NameTypeReqDescription
limitinteger–Maximum number of records to return, 1-10 (default 10)
NameTypeReqDescription
itemsarrayyesNewest first

No examples provided.

directory_get_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.

NameTypeReqDescription
directory_idstringyesUMD Directory ID (the part of the email before @umd.edu), e.g. "djpines"
NameTypeReqDescription
person–yesThe person, or null when the directory has no match

No examples provided.

directory_search ~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.

NameTypeReqDescription
querystringyesLast name, full name, email, Directory ID or phone number, e.g. "Pines"
sounds_likeboolean–Also match last names that sound like the query, e.g. "Pynes" for Pines
NameTypeReqDescription
countintegeryesNumber of people returned
limit_reachedbooleanyestrue when the directory capped the results (50 anonymously, 100 signed in); narrow the search to see the rest
messagestring|nullyesNotice the directory showed instead of results, e.g. "No users found"; null otherwise
peoplearrayyesMatching people in the order the directory lists them

No examples provided.

directory_search_advanced ~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.

NameTypeReqDescription
affiliationsarray–Affiliations to include (default: faculty, staff and affiliate, plus student when signed in)
departmentstring–Department name to narrow by, e.g. "Computer Science"
emailstring–Email address
first_namestring–First name
institutionsarray–Institutions to include (default: UMCP only)
last_namestring–Last name (prefix match)
middle_namestring–Middle name
phonestring–Work phone, digits or dashed, e.g. "301-405-5803"
NameTypeReqDescription
countintegeryesNumber of people returned
limit_reachedbooleanyestrue when the directory capped the results (50 anonymously, 100 signed in); narrow the search to see the rest
messagestring|nullyesNotice the directory showed instead of results, e.g. "No users found"; null otherwise
peoplearrayyesMatching people in the order the directory lists them

No examples provided.

elms_get_activity_stream ~61

Recent activity across the signed-in student's active ELMS (Canvas) courses: new announcements, discussion posts, grades and messages. Requires login.

NameTypeReqDescription
limitinteger–Maximum number of records to return, 1-50 (default 20)
NameTypeReqDescription
itemsarrayyesNewest first

No examples provided.

elms_get_conversation ~45

One ELMS (Canvas) Inbox conversation with every message in it. Requires login.

NameTypeReqDescription
conversation_idintegeryesConversation id, from elms_list_conversations
NameTypeReqDescription
contextstring|nullyesCourse the conversation belongs to, if any
idintegeryesConversation id, for elms_get_conversation
last_messagestring|nullyes–
last_message_atstring|nullyesISO 8601 timestamp (UTC); null when unset
message_countintegeryes–
messagesarrayyesMessages, newest first as Canvas orders them
participantsarrayyesParticipant names
starredbooleanyes–
statestringyes–
subjectstring|nullyes–

No examples provided.

elms_get_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.

NameTypeReqDescription
course_idintegeryesCanvas course id, from elms_list_courses
NameTypeReqDescription
course_codestring|nullyese.g. "CMSC131-0101-Fall 2026"
end_atstring|nullyesISO 8601 timestamp (UTC); null when unset
enrollment_type–yesThe user's role in the course
front_page–yesThe course front page; null when the course has none
grades–yesCurrent standing; null when the course hides grades
hide_final_gradesbooleanyes–
idintegeryesCanvas course id, used by the other ELMS tools
namestringyes–
start_atstring|nullyesISO 8601 timestamp (UTC); null when unset
statestringyesPublication state
syllabusstring|nullyesSyllabus body, converted from HTML to plain text; null when empty
tabsarrayyesNavigation tabs enabled for the course, in order
teachersarrayyes–
term–yes–
urlstringyesCourse home page

No examples provided.

elms_get_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.

NameTypeReqDescription
course_idinteger–Only this course (default: all enrollments)
NameTypeReqDescription
enrollmentsarrayyes–

No examples provided.

elms_get_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.

NameTypeReqDescription
end_datestring–Last day to include (default: 14 days from today)
start_datestring–First day to include (default: today)
NameTypeReqDescription
itemsarrayyesIn date order

No examples provided.

elms_get_submission ~72

The signed-in student's submission for one ELMS (Canvas) assignment: status, score, grade and any instructor comments. Requires login.

NameTypeReqDescription
assignment_idintegeryesCanvas assignment id, from elms_list_assignments
course_idintegeryesCanvas course id, from elms_list_courses
NameTypeReqDescription
attempt–yes–
commentsarrayyesInstructor and student comments, when requested
excusedbooleanyes–
gradestring|nullyes–
graded_atstring|nullyesISO 8601 timestamp (UTC); null when unset
latebooleanyes–
missingbooleanyes–
scorenumber|nullyes–
statestringyes–
submitted_atstring|nullyesISO 8601 timestamp (UTC); null when unset
urlstring|nullyesPreview link for the submission

No examples provided.

elms_get_todo ~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.

NameTypeReqDescription
itemsarrayyes–

No examples provided.

elms_get_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.

NameTypeReqDescription
eventsarrayyes–

No examples provided.

elms_list_announcements ~92

Announcements posted in one or more ELMS (Canvas) courses within a date window (default: the last 14 days). Requires login.

NameTypeReqDescription
course_idsarrayyesCourses to read announcements from, up to 20
end_datestring–Latest post date (default: today)
start_datestring–Earliest post date (default: 14 days ago)
NameTypeReqDescription
announcementsarrayyesNewest first

No examples provided.

elms_list_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.

NameTypeReqDescription
bucketstring–Only assignments in this bucket (default: all)
course_idintegeryesCanvas course id, from elms_list_courses
NameTypeReqDescription
assignmentsarrayyes–

No examples provided.

elms_list_conversations ~74

The signed-in student's ELMS (Canvas) Inbox: conversations with their subject, participants and last message. Requires login.

NameTypeReqDescription
limitinteger–Maximum number of records to return, 1-100 (default 20)
scopestring–Which Inbox folder to list (default "inbox")
NameTypeReqDescription
conversationsarrayyesMost recent first

No examples provided.

elms_list_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.

NameTypeReqDescription
statestring–"active" for current courses, "completed" for past terms, "all" for both
NameTypeReqDescription
coursesarrayyesCourses as Canvas orders them

No examples provided.

elms_list_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.

NameTypeReqDescription
course_idintegeryesCanvas course id, from elms_list_courses
NameTypeReqDescription
modulesarrayyesModules in course order

No examples provided.

elms_whoami ~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.

NameTypeReqDescription
avatar_urlstring|nullyes–
emailstring|nullyes–
idintegeryesCanvas user id
login_idstring|nullyesUMD Directory ID; null if Canvas hides it
namestringyes–
short_namestring|nullyes–
sortable_namestring|nullyes"Last, First"
time_zonestring|nullyese.g. "America/New_York"

No examples provided.

login ~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.

NameTypeReqDescription
attributesobjectyesAttributes the IdP released about the user, e.g. mail, displayName, eduPersonAffiliation
servicesarrayyesSingle sign-on services other tools depend on, and whether each is signed in
userstringyesUMD Directory ID of the signed-in user, e.g. "jsmith"

No examples provided.

logout ~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 ~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.

NameTypeReqDescription
datestring–Day to get the menu for, as YYYY-MM-DD (default: today). Menus are posted about a week ahead.
hallstringyesDining hall to get the menu for
NameTypeReqDescription
mealsarrayyesMeal periods served that day, in order; empty if no menu is posted for that date

No examples provided.

nutrition_get_recipe ~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.

NameTypeReqDescription
idstringyesRecipe identifier from a menu item, e.g. "060064*2"
NameTypeReqDescription
allergensarrayyesAllergens the label declares, e.g. "gluten", "soybeans", "sesame"; empty if none
caloriesintegeryesCalories per serving
idstringyesRecipe identifier, e.g. "060064*2"
ingredientsarrayyesIngredients in order of predominance, each keeping its sub-ingredients in parentheses, e.g. "Tofu (Water, Soybeans, Calcium Sulfate)"
namestringyesName of the dish, e.g. "Bacon"
nutrientsarrayyesNutrition facts per serving, in the order the label lists them
serving_sizestringyesServing size as printed, e.g. "2 ea" or "4 oz"

No examples provided.

planetterp_get_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.

NameTypeReqDescription
coursestringyesCourse id, e.g. "CMSC131" or "ENGL101X"
NameTypeReqDescription
average_gpanumber|nullyesAverage GPA across all recorded sections, on a 4.0 scale; null if no grade data
course_numberstringyesCourse number within the department, e.g. "131"
credits–yesNumber of credits the course is worth; null if unknown
departmentstringyesFour-letter department code, e.g. "CMSC"
descriptionstring|nullyesCatalog description of the course, which may contain HTML tags; null if none
namestringyesFull course code, e.g. "CMSC131"
professorsarrayyesNames of professors who have taught this course; a name repeats once per section taught
reviewsarrayyesStudent reviews of professors, written for this course
titlestring|nullyesCourse title, e.g. "Object-Oriented Programming I"; null if unknown

No examples provided.

planetterp_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.

NameTypeReqDescription
coursestring–Only include grades for this course, e.g. "MATH140"
professorstring–Only include grades for sections taught by this professor, e.g. "Jon Snow"
sectionstring–Only include this section, e.g. "101" or "0101" (default: all sections)
semesterstring–Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026
NameTypeReqDescription
gradesarrayyesOne entry per section matching the query

No examples provided.

planetterp_get_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.

NameTypeReqDescription
namestringyesName of the professor, e.g. "Jon Snow"
NameTypeReqDescription
average_ratingnumber|nullyesAverage student rating, on a 1-5 scale; null if the professor has no reviews
coursesarrayyesCourses this professor has taught; a code repeats once per section taught
namestringyesName of the professor
reviewsarrayyesStudent reviews of this professor
slugstringyesPlanetTerp's unique identifier for the professor; their page is https://planetterp.com/professor/<slug>
typestringyes"ta" if this person is a teaching assistant, "professor" otherwise

No examples provided.

planetterp_list_courses ~101

List UMD courses on PlanetTerp in alphabetical order, optionally within one department. No login needed.

NameTypeReqDescription
departmentstring–Only list courses in this four-letter department, e.g. "CMSC" (default: all departments)
limitinteger–Maximum number of records to return, 1-100 (default 100)
offsetinteger–Number of records to skip, for pagination (default 0)
NameTypeReqDescription
coursesarrayyesCourses matching the query

No examples provided.

planetterp_list_professors ~96

List UMD professors and teaching assistants on PlanetTerp in alphabetical order. No login needed.

NameTypeReqDescription
limitinteger–Maximum number of records to return, 1-100 (default 100)
offsetinteger–Number of records to skip, for pagination (default 0)
typestring–Only list professors ("professor") or teaching assistants ("ta"); default: both
NameTypeReqDescription
professorsarrayyesProfessors matching the query

No examples provided.

planetterp_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.

NameTypeReqDescription
limitinteger–Maximum number of records to return, 1-100 (default 30)
offsetinteger–Number of records to skip, for pagination (default 0)
querystringyesText to search for, e.g. "CMSC13" or "Snow"
NameTypeReqDescription
resultsarrayyesCourses and professors matching the query

No examples provided.

recwell_get_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.

NameTypeReqDescription
facilitystringyesWhich facility page to read
NameTypeReqDescription
sectionsarrayyesContent sections in page order
titlestringyesPage title
urlstringyesPage URL

No examples provided.

recwell_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.

NameTypeReqDescription
sectionsarrayyesContent sections in page order
titlestringyesPage title
urlstringyesPage URL

No examples provided.

recwell_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.

NameTypeReqDescription
daystring–Only classes on this weekday (default: the whole week)
NameTypeReqDescription
classesarrayyesClasses in the order the site lists them

No examples provided.

recwell_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.

NameTypeReqDescription
clubsarrayyesClubs in alphabetical order

No examples provided.

Install

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

# add to Claude Code
claude mcp add avivkeller-umd-mcp -- npx -y umd-mcp
Common questions

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.