io.github.avivkeller/umd-mcp
NPM · UMD-MCP
MCP server exposing University of Maryland data
Available components
Last scanned (22 hours ago)
Scores higher than 69% 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 →
recwell_list_facilities List facilities ~46
RecWell facilities with a one-paragraph description and link each, grouped as indoor or outdoor. Use recwell_get_facility for hours tables and details. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| facilities | array | yes | Facilities in the order the site lists them |
No examples provided.
senate_get_bill Get a bill ~103
One University Senate bill by id or document number: the proposal, sponsor, policy link, related bills, and every stage of its history (committee reviews, Senate votes, presidential approval) with dates, decisions and the PDFs filed at each stage. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| bill | string | yes | Bill id (e.g. "987") or Senate document number (e.g. "26-27-04"), from senate_list_legislation or senate_get_committee |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | – | yes | When the process finished |
| description | string|null | yes | The proposal as submitted |
| document_number | string | yes | Senate document number, e.g. "26-27-04": the academic year and a sequence number |
| id | integer | yes | Bill id, for senate_get_bill |
| is_active | boolean | yes | Whether the bill is still moving through the process |
| is_complete | boolean | yes | Whether the process has finished |
| keywords | string|null | yes | Keywords the Senate Office tagged the bill with |
| pcc_id | string|null | yes | Programs, Curricula & Courses (PCC) proposal id, for curriculum bills |
| policy_url | string|null | yes | The policy the bill concerns, when there is one |
| proposed | – | yes | When the proposal was submitted |
| related_bills | array | yes | Bills the Senate Office linked to this one |
| sponsor | string|null | yes | Who proposed it |
| stages | array | yes | The bill's history, most recent stage first |
| start_year | – | yes | Calendar year the bill started in |
| title | string | yes | Bill title |
| url | string | yes | Bill page on senate.umd.edu |
No examples provided.
senate_get_committee Get a committee or council ~112
One University Senate committee, University council, or past council or task force by name (from senate_list_committees): its page as text (charge, chair, contact), current members with seats and colleges, and the bills it is reviewing. See senate_list_past_committee_legislation for earlier bills and senate_get_committee_meetings for meeting dates. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name as senate_list_committees gives it, e.g. "Academic Procedures & Standards" |
| Name | Type | Req | Description |
|---|---|---|---|
| about | string|null | yes | The group's page as plain text: charge, chair, contact |
| active_bills | array | yes | Bills the group is reviewing now |
| links | array | yes | Links on the page (documents, forms, email addresses) |
| members | array | yes | Current members; empty for past councils |
| name | string | yes | Name, to pass to senate_get_committee |
| summary | string|null | yes | One-paragraph description from the listing page |
| type | string | yes | "committee" for a Senate standing or special committee, "council" for a University council, "past_council" for a dissolved council or task force |
| url | string | yes | Page on senate.umd.edu |
No examples provided.
senate_get_committee_meetings Get committee meetings ~104
A University Senate standing committee's meeting dates and times for an academic year (default: the current one), with the agendas posted for each; other meeting materials need a committee member login. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| committee | string | yes | Committee name as senate_list_committees gives it, e.g. "Academic Procedures & Standards" |
| year | string | – | Academic year, e.g. "2024-2025" (default: current) |
| Name | Type | Req | Description |
|---|---|---|---|
| academic_year | string | yes | Academic year as "YYYY-YYYY", e.g. "2025-2026" |
| meetings | array | yes | Meetings in date order |
| years | array | yes | Every academic year with committee folders, newest first |
No examples provided.
senate_get_constituent Get a constituent ~108
How the University Senate files a member of the campus community, by UMD Directory ID: their college, department, title, population and constituency. To find who represents them, call senate_list_senators with that constituency, and with the college too when represented_by_college is true, as the site's "Find My Senator" tool does. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| directory_id | string | yes | UMD Directory ID, the part of a umd.edu email before the @ |
| Name | Type | Req | Description |
|---|---|---|---|
| college | string|null | yes | College or division acronym |
| constituency | string | yes | Constituency they vote in, e.g. "Tenured/Tenure-Track Faculty" |
| department | string|null | yes | Department, e.g. "CMNS-Computer Science" |
| directory_id | string | yes | UMD Directory ID |
| major | string|null | yes | Major, for students |
| name | string | yes | Full name |
| population | string | yes | Population the Senate files them under, e.g. "Faculty" |
| represented_by_college | boolean | yes | Whether their constituency elects senators per college, so their senators are those with both this constituency and this college; otherwise the constituency alone |
| title | string|null | yes | Job title, or null for students |
No examples provided.
senate_get_meetings Get Senate meetings ~93
The University Senate meeting schedule for an academic year (default: the current one) with the agenda, materials, slides and minutes posted for each meeting, and the years the archive covers. Meetings run 3:15-5:00 PM unless a document says otherwise. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| year | string | – | Academic year, e.g. "2024-2025" (default: current) |
| Name | Type | Req | Description |
|---|---|---|---|
| academic_year | string | yes | Academic year as "YYYY-YYYY", e.g. "2025-2026" |
| meetings | array | yes | Meetings in date order |
| other_documents | array | yes | Documents filed under the year but not a meeting, e.g. committee reports |
| years | array | yes | Every academic year with a schedule, newest first |
No examples provided.
senate_list_committees List committees and councils ~106
The University Senate's standing and special committees, the University councils it seats, and past councils and task forces, each with a one-paragraph summary. Pass a name to senate_get_committee for its charge, members and current work. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| type | string | – | Only "committee" (Senate committees), "council" (University councils) or "past_council" (dissolved councils and task forces); default: all |
| Name | Type | Req | Description |
|---|---|---|---|
| groups | array | yes | Committees, then councils |
No examples provided.
senate_list_legislation List legislation ~158
Bills before the University Senate (senate.umd.edu): the current academic year's legislation with where each bill stands and who is reviewing it, or the archive of past bills back to 2001. Filter by words in the title or document number. Call senate_get_bill for a bill's history and documents. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-200 (default 50) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| query | string | – | Only bills whose title or document number contains this text |
| scope | string | – | "current" for this year's bills (default), "archived" for past years |
| Name | Type | Req | Description |
|---|---|---|---|
| bills | array | yes | Newest first |
| total | integer | yes | Bills matching the query |
No examples provided.
senate_list_past_committee_legislation List past committee legislation ~105
Every bill each University Senate standing committee has reviewed, grouped by committee and academic year back to 2001, as the Past Committees page lists them: document number, title, whether the bill is still active and when it completed. Optionally one committee. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| committee | string | – | Only this committee, named as senate_list_committees gives it, e.g. "Academic Procedures & Standards" (default: every committee) |
| Name | Type | Req | Description |
|---|---|---|---|
| committees | array | yes | Committees in the order the site lists them |
No examples provided.
senate_list_senators List senators ~156
Current members of the University Senate with the seat, constituency, college and term end of each. Filter by college or division acronym, population, constituency, or a name search. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| college | string | – | Only senators for this college or division acronym, e.g. "CMNS", "ENGR", "VPSA" |
| constituency | string | – | Only senators for this constituency, e.g. "Tenured/Tenure-Track Faculty", "Exempt Staff - Divisions" |
| population | string | – | Only senators for this population, e.g. "Faculty" or "Undergraduate Student" |
| query | string | – | Only senators whose name, email or seat contains this text |
| Name | Type | Req | Description |
|---|---|---|---|
| senators | array | yes | In alphabetical order by name |
No examples provided.
terplink_get_article Get an article ~43
One TerpLink news article with its full body as plain text. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | integer | yes | Article id from terplink_get_news |
| Name | Type | Req | Description |
|---|---|---|---|
| author | string|null | yes | Author name |
| body | string|null | yes | Article body as plain text |
| id | integer | yes | Article id, for terplink_get_article |
| image_url | string|null | yes | Cover image |
| organization | object | yes | The organization that posted the article |
| published | string | yes | When the article was posted |
| summary | string|null | yes | Teaser text |
| title | string | yes | Headline |
| updated | string | yes | When the article was last edited |
| url | string | yes | Public TerpLink page |
No examples provided.
terplink_get_event Get an event ~54
Full details of one TerpLink event: description, venue or meeting link, hosts, categories, perks and RSVP capacity. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| event_id | integer | yes | Event id from terplink_search_events |
| Name | Type | Req | Description |
|---|---|---|---|
| address | object | yes | Where the event is held |
| benefits | array | yes | Perks advertised, e.g. "Free Food" |
| categories | array | yes | Category names |
| co_hosts | array | yes | Ids of every hosting organization |
| description | string|null | yes | Description as plain text |
| ends_on | string | yes | End, ISO 8601 |
| id | integer | yes | Event id, for terplink_get_event |
| image_url | string|null | yes | Event image |
| name | string | yes | Event name |
| organization | object | yes | The hosting organization |
| rsvp | object | yes | RSVP settings and counts |
| rsvp_total | integer | yes | RSVPs so far |
| starts_on | string | yes | Start, ISO 8601 |
| theme | string | yes | Theme the host picked |
| url | string | yes | Public TerpLink page |
| visibility | string | yes | Who can see the event, e.g. "Public" |
No examples provided.
terplink_get_news Get news ~114
News articles student organizations and departments post on TerpLink, newest first, optionally filtered by keyword or organization. Call terplink_get_article for the body. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-50 (default 20) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| organization_id | integer | – | Only articles from this organization |
| query | string | – | Words to match in the title or body |
| Name | Type | Req | Description |
|---|---|---|---|
| articles | array | yes | Newest first |
| total | integer | yes | Articles matching the query |
No examples provided.
terplink_get_organization Get an organization ~72
Full profile of one TerpLink student organization: description, email, type, primary contact, social links and mailing address. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| organization | string | yes | Website key (e.g. "kedma", from terplink_search_organizations or the public URL) or numeric organization id |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string|null | yes | Mailing address on one line |
| categories | array | yes | Category names, e.g. "SGA Recognized" |
| category_ids | array | yes | Ids of the categories the organization is in |
| description | string|null | yes | Full description as plain text |
| string|null | yes | Contact email | |
| id | integer | yes | Organization id |
| image_url | string|null | yes | Profile picture |
| name | string | yes | Organization name |
| phone | string|null | yes | Contact phone |
| primary_contact | string|null | yes | Name of the primary contact |
| short_name | string|null | yes | Abbreviation or nickname |
| social_media | object | yes | Links the organization lists; null where none |
| started | – | yes | When the organization was registered |
| status | string | yes | Registration status, e.g. "Active" |
| summary | string|null | yes | One-paragraph summary |
| type | string|null | yes | e.g. "Registered Student Organization - Spring" |
| url | string | yes | Public TerpLink page |
| website_key | string | yes | Pass to terplink_get_organization; the last part of the public URL |
No examples provided.
terplink_list_event_categories List event categories ~44
The categories TerpLink events are tagged with (Academic, Service, Sports and Recreation, ...). Use the ids with terplink_search_events. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | yes | Categories as the site orders them |
No examples provided.
terplink_list_organization_categories List organization categories ~48
The categories TerpLink files student organizations under (Academic, Cultural/Ethnic, Honor Society, ...). Use the ids with terplink_search_organizations. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | yes | Categories in name order |
No examples provided.
terplink_search_events Search events ~227
Search TerpLink events by keyword, date range, hosting organization, category, theme or perk. Upcoming and ongoing events only unless include_past is set. Times are ISO 8601. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| benefits | array | – | Only events offering these perks |
| category_ids | array | – | Only events in categories (see terplink_list_event_categories) with any of these ids |
| ends_before | string | – | Only events ending before this date |
| include_past | boolean | – | Also return events that have already ended (default false) |
| limit | integer | – | Maximum number of records to return, 1-50 (default 20) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| organization_ids | array | – | Only events hosted by organizations with any of these ids |
| query | string | – | Words to match in the name or description |
| starts_after | string | – | Only events starting on or after this date |
| themes | array | – | Only events with any of these themes |
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | yes | Soonest-ending first |
| total | integer | yes | Events matching the query |
No examples provided.
terplink_search_organizations Search organizations ~129
Search the roughly 1,000 active student organizations on TerpLink by name or keyword, optionally within categories from terplink_list_organization_categories. Returns summaries; call terplink_get_organization for contact details. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| category_ids | array | – | Only organizations with any of these ids |
| limit | integer | – | Maximum number of records to return, 1-50 (default 20) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| query | string | – | Words to match in the name or description |
| Name | Type | Req | Description |
|---|---|---|---|
| organizations | array | yes | Matches in name order |
| total | integer | yes | Organizations matching the query |
No examples provided.
terplink_search_service_opportunities Search service opportunities ~97
Volunteer and community service opportunities listed for UMD students (mirrored from GivePulse), searchable by keyword. Includes past listings. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of records to return, 1-50 (default 20) |
| offset | integer | – | Number of records to skip, for pagination (default 0) |
| query | string | – | Words to match in the title or description |
| Name | Type | Req | Description |
|---|---|---|---|
| opportunities | array | yes | Matches as GivePulse orders them |
| total | integer | yes | Opportunities matching the query |
No examples provided.
testudo_get_current_term Get current term ~36
The current academic term at UMD with its registration status and key dates, from the Testudo student portal. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| dates | object | yes | Key dates of the term; a date is null when the portal leaves it unset |
| id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| name | string | yes | e.g. "Fall 2026" |
| status | – | yes | Where today falls relative to the schedule adjustment, registration and graduation application windows; null when the portal omits it |
No examples provided.
testudo_get_grade_options Get grade options ~139
The grading option (regular or pass/fail) the signed-in student has elected for each course in a term, from the Testudo student portal, with the pass/fail credit totals. Only populated while the term's election window is open; use testudo_list_terms with kind "grade_option" to find such terms. Read-only; changing an option is not supported. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| options | array | yes | One entry per course; empty outside the election window |
| pass_fail_credits | object | yes | Totals the portal shows; both null when it shows none |
| term | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
No examples provided.
testudo_get_grades Get grades ~114
The signed-in student's grades for a term from the Testudo student portal: final grades once posted, mid-term grades while the term runs, and the semester and cumulative GPA. Use testudo_list_terms with kind "grades" for the terms available. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| academic_action | string|null | yes | Academic action (probation, dismissal, dean's list, ...) recorded for the term; null if none |
| final_grades | array | yes | Courses with final grades; empty until grades are posted |
| gpa | – | yes | null until the term has posted grades |
| midterm_grades | array | yes | Courses with mid-term grades; empty outside the mid-term window |
| term | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
No examples provided.
testudo_get_graduation_application_status Get graduation application status ~57
The signed-in student's graduation applications from the Testudo student portal: the term applied for, the diploma name and mailing address, and the status of each degree. Read-only; applying is not supported. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| applications | array | yes | Applications on file; empty when the student has not applied |
No examples provided.
testudo_get_parent_access List parent access ~43
Parent or guest accounts the signed-in student has granted access to their Testudo records. Read-only; granting or revoking access is not supported. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| accounts | array | yes | Accounts with access; empty when none |
No examples provided.
testudo_get_profile Get profile ~47
The signed-in student's contact information on file with the university, from the Testudo student portal: name, email, phone numbers, local and permanent addresses and emergency contact. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| string|null | yes | – | |
| emergency_contact | – | yes | – |
| gender | string|null | yes | – |
| local_address | – | yes | – |
| name | string|null | yes | – |
| permanent_address | – | yes | – |
| phones | object | yes | – |
| uid | string|null | yes | University id |
No examples provided.
testudo_get_registration_appointment Get registration appointment ~66
When the signed-in student may register for classes, from the Testudo student portal: the registration appointment for the upcoming term, any blocks on the account, and the majors, minors and certificates on record. Read-only; this does not register for anything. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| appointment | – | yes | The registration appointment; null when none is assigned yet |
| blocks | array | yes | Registration blocks on the account as the portal lists them; empty when none |
| certificates | array | yes | – |
| current_term | – | yes | – |
| majors | array | yes | – |
| minors | array | yes | – |
| next_appointment_available | – | yes | When the next appointment date will be published, if the portal announces one |
| next_registration_term | – | yes | – |
| previous_registration_term | – | yes | – |
| primary_major | object | yes | The primary major on record |
| registration_term | – | yes | Term the appointment registers for |
| student_type | string|null | yes | e.g. "Undergraduate" |
| uid | string|null | yes | University id |
No examples provided.
testudo_get_request_status Get document request status ~56
Status of the official transcript and enrollment certification orders the signed-in student has placed through the Testudo student portal, and any judicial or financial block that would stop new orders. Read-only; ordering is not supported. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| blocks | object | yes | Blocks that prevent transcript and certification requests |
| enrollment_certification_requests | array | yes | Enrollment certification orders, as the portal lists them |
| transcript_requests | array | yes | Official transcript orders, as the portal lists them |
No examples provided.
testudo_get_schedule Get schedule ~117
The signed-in student's class schedule for a term from the Testudo student portal: each registered section with its instructors, credits, delivery method and weekly meetings (days, times, building and room). Use testudo_list_terms with kind "schedule" for the terms available. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| courses | array | yes | Registered sections in the order the portal lists them; empty when not registered |
| student | object | yes | – |
| term | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
No examples provided.
testudo_get_unofficial_transcript Get unofficial transcript ~52
The signed-in student's unofficial transcript from the Testudo student portal, as plain text: transfer credit, every past course with its grade, and current courses. For advising purposes only. Requires login.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string|null | yes | Date the transcript was generated, as printed (MM/DD/YY) |
| text | string | yes | The transcript as fixed-width text, section headers included |
No examples provided.
testudo_list_terms List terms ~121
Terms the signed-in student can use with a given Testudo feature: "schedule" lists terms with a class schedule (use with testudo_get_schedule), "grades" terms with posted grades, "enrollment_certification" terms an enrollment certification can be ordered for, "graduation" every term a graduation date can fall in, "graduation_application" terms open for a graduation application, and "grade_option" terms with an open pass/fail election window. Requires login.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | Which feature's term list to return |
| Name | Type | Req | Description |
|---|---|---|---|
| terms | array | yes | Terms in the order the portal lists them |
No examples provided.
testudo_soc_autocomplete_courses Autocomplete course ids ~138
Course ids and titles in a term whose id starts with the given text, from the UMD Schedule of Classes autocomplete. The cheapest way to find what a department offers or to resolve a partial course id. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Start of a course id, e.g. "CMSC" (all CMSC courses) or "CMSC13" |
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| courses | array | yes | Courses offered that term whose id starts with the query |
No examples provided.
testudo_soc_autocomplete_instructors Autocomplete instructors ~134
Instructors teaching in a term whose last or first name contains the given text, from the UMD Schedule of Classes autocomplete. Pass the returned `name` as the instructor to testudo_soc_search_courses. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Part of a last or first name, at least two characters, e.g. "gonz" |
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| instructors | array | yes | Matching instructors |
No examples provided.
testudo_soc_get_building Get a building ~100
Look up a classroom building by the building code and room number a section lists (e.g. "IRB" "0324"): full name, campus building number and map links. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| building | string | yes | Building code as shown on a section, e.g. "IRB" |
| room | string | yes | Room number as shown on the section, e.g. "0324"; the lookup needs one |
| Name | Type | Req | Description |
|---|---|---|---|
| campus_map_url | string|null | yes | Link to the building on the UMD campus map |
| code | string | yes | Building code, e.g. "IRB" |
| google_maps_url | string|null | yes | Link to the building on Google Maps |
| name | string | yes | Building name, e.g. "Brendan Iribe Center" |
| number | string|null | yes | Campus building number, e.g. "432" |
| picture_url | string|null | yes | Photo of the building |
| room | string|null | yes | Room number as given, e.g. "0324" |
| room_info_url | string|null | yes | Link to the room in 25Live |
No examples provided.
testudo_soc_get_course Get a course with its sections ~122
One course in a term from the UMD Schedule of Classes, with every section: instructors, seat counts, meeting days, times, rooms and delivery method. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Course id, e.g. "CMSC131" or "ENGL101X" |
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| course | object | yes | The course and its sections |
| seats_as_of | string|null | yes | When the seat counts on this page were last refreshed, as YYYY-MM-DDTHH:MM in US Eastern time (roughly hourly); null if the page does not say |
No examples provided.
testudo_soc_get_sections Get sections ~283
Sections of one or more courses in a term, from the UMD Schedule of Classes: instructors, seat counts, meeting days, times, rooms and delivery method. Seat counts are a snapshot refreshed roughly hourly, not real time. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| course_ids | array | yes | Course ids to get sections for, up to 10 per call, e.g. ["CMSC131", "CMSC132"] |
| teaching_center | string | – | Only sections taught at this location or in this program: "ALL" all locations and programs, "*" College Park campus, "DC" District of Columbia, "FS" Frostburg State, "HG" Hagerstown, "HT" Heat Center… |
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| sections | object | yes | Sections keyed by course id, in the order the site lists them; a course the site does not offer that term is absent |
No examples provided.
testudo_soc_list_courses List courses in a department ~135
Every course a department offers in a term, from the UMD Schedule of Classes: title, credits, grading methods, gen-ed codes, prerequisites and description. Sections are not included; call testudo_soc_get_sections or testudo_soc_get_course for those. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| department | string | yes | Four-letter department code, e.g. "CMSC" |
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| courses | array | yes | Courses in catalog order; empty when the department offers none that term |
| department | object | yes | The department |
| seats_as_of | string|null | yes | When the seat counts on this page were last refreshed, as YYYY-MM-DDTHH:MM in US Eastern time (roughly hourly); null if the page does not say |
No examples provided.
testudo_soc_list_departments List departments ~87
Departments (four-letter course prefixes) offering courses in a term, from the UMD Schedule of Classes. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| departments | array | yes | Departments in alphabetical order; empty for a term the site does not list |
No examples provided.
testudo_soc_list_gen_ed_categories List gen-ed categories ~66
The general education categories and requirement codes (FSAW, DSHS, DVUP, ...) the UMD Schedule of Classes lists for a term. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| term_id | string | – | Term to list for (default: the newest term) |
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | yes | Categories in the order the site lists them |
No examples provided.
testudo_soc_list_gen_ed_courses List gen-ed courses ~124
Courses fulfilling one general education requirement in a term, from the UMD Schedule of Classes. Sections are not included; call testudo_soc_get_sections for those. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | General education code from testudo_soc_list_gen_ed_categories, e.g. "DSNL" |
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| courses | array | yes | Courses grouped by department, in catalog order; empty for an unknown code |
| seats_as_of | string|null | yes | When the seat counts on this page were last refreshed, as YYYY-MM-DDTHH:MM in US Eastern time (roughly hourly); null if the page does not say |
No examples provided.
testudo_soc_list_syllabi List syllabi ~129
Past syllabi on file for a course in the UMD Schedule of Classes syllabus repository: the term and instructor of each. The PDFs themselves need a UMD login. No login needed for the list.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Course id, e.g. "CMSC131" or "ENGL101X" |
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| Name | Type | Req | Description |
|---|---|---|---|
| syllabi | array | yes | Syllabi on file, newest first as the site lists them |
No examples provided.
testudo_soc_list_terms List Schedule of Classes terms ~48
Terms the UMD Schedule of Classes currently lists (about four: the current term plus the next few). Returns the term ids the other Schedule of Classes tools take. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| terms | array | yes | Terms in the order the site lists them |
No examples provided.
testudo_soc_search_courses Search courses ~594
Search the UMD Schedule of Classes for a term the way its search form does. Needs at least one of course_id (a department prefix, partial id or full id), instructor, or delivery; the other fields narrow the results. When the search narrows by section (instructor, days, time, delivery, open seats, credits or level) the matching sections come back inline; otherwise sections are null and testudo_soc_get_sections fetches them. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | – | Department prefix ("CMSC"), partial id ("CMSC13") or full course id ("CMSC131") to match |
| credits | integer | – | Only courses whose credits satisfy credits_compare against this value, 0-4 |
| credits_compare | string | – | How to compare course credits with `credits` (default "=") |
| days | array | – | Only sections that meet on these weekdays |
| delivery | array | – | Only sections taught in these ways (default: any) |
| end_time | string | – | End of the range when time_compare is "between", e.g. "3:00 PM" |
| instructor | string | – | Instructor name as testudo_soc_autocomplete_instructors returns it in `name`, e.g. "Gonzalez, Elias" |
| level | string | – | Only undergraduate ("UGRAD") or graduate ("GRAD") courses (default "ALL") |
| open_sections_only | boolean | – | Only sections with open seats (default false) |
| section_id | string | – | Only this section, e.g. "0101"; use together with a full course_id |
| start_time | string | – | Time for time_compare, on the quarter hour, e.g. "12:00 PM" or "9:30 AM" |
| teaching_center | string | – | Only sections taught at this location or in this program: "ALL" all locations and programs, "*" College Park campus, "DC" District of Columbia, "FS" Frostburg State, "HG" Hagerstown, "HT" Heat Center… |
| term_id | string | yes | Four-digit year followed by "01" (Spring), "05" (Summer), "08" (Fall) or "12" (Winter), e.g. "202608" for Fall 2026 |
| time_compare | string | – | Only sections whose meetings start "after", "at" or "before" start_time, or "between" start_time and end_time |
| Name | Type | Req | Description |
|---|---|---|---|
| courses | array | yes | Matching courses grouped by department, in catalog order |
| message | string|null | yes | Message the site shows instead of results, e.g. that no courses matched or that the search needs more criteria; null when there are results |
| seats_as_of | string|null | yes | When the seat counts on this page were last refreshed, as YYYY-MM-DDTHH:MM in US Eastern time (roughly hourly); null if the page does not say |
No examples provided.
transportation_get_route Get a Shuttle-UM route ~95
One Shuttle-UM route with its stops in order (for the most common trip pattern on the given day) and the route polyline, from the published GTFS feed. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Service date as YYYY-MM-DD (default: today in College Park) |
| route | string | yes | Route id as in transportation_list_routes, e.g. "104" (event routes have longer ids) |
| Name | Type | Req | Description |
|---|---|---|---|
| color | string|null | yes | Route colour as a six-digit hex string, e.g. "93c47d" |
| headsign | string|null | yes | Destination shown on the bus for this pattern |
| id | string | yes | Route id, e.g. "104" |
| long_name | string|null | yes | Route name, e.g. "College Park Metro Station" |
| scheduled_today | boolean | yes | true when at least one trip runs today |
| shape | array | yes | Route polyline as [longitude, latitude] pairs, thinned to at most 500 points |
| short_name | string|null | yes | Number or code shown on the bus, e.g. "104" |
| stops | array | yes | Stops of the most common trip pattern, in order; empty when nothing is scheduled |
| url | string | yes | DOTS page with the stop list and printed timetable |
No examples provided.
transportation_get_schedule Get Shuttle-UM departures ~156
Scheduled departures of a Shuttle-UM route on a date, optionally at one stop, from the published GTFS feed. Times are scheduled, not live; real-time arrivals are only in the Transit app. Without a stop only timepoint stops are listed, to keep the answer short. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Only departures at or after this local time, as HH:MM |
| date | string | – | Service date as YYYY-MM-DD (default: today in College Park) |
| route | string | yes | Route id as in transportation_list_routes, e.g. "104" (event routes have longer ids) |
| stop | string | – | Only departures from this stop, e.g. "1001" |
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Date as YYYY-MM-DD |
| departures | array | yes | Departures in time order; stops without a scheduled time are estimates |
| route | string | yes | Route id |
| service_ids | array | yes | GTFS service patterns active that day, e.g. "FA26RS Weekday"; empty means no service |
| weekday | string | yes | – |
No examples provided.
transportation_get_service_alerts Get Shuttle-UM service alerts ~56
Current Shuttle-UM system updates and alerts (detours, schedule changes) and the modified-service notices linked from the DOTS schedules page. Delays are not posted here, only in the Transit app. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| alerts | array | yes | System updates and alerts, top first |
| effective | string|null | yes | Effective-date note under the heading |
| notices | array | yes | Modified-service notices linked under the season heading |
| season | string|null | yes | Schedule season heading, e.g. "FALL 2026 SCHEDULES" |
No examples provided.
transportation_get_service_calendar Get Shuttle-UM service calendar ~54
The Shuttle-UM service calendar for the academic year: for each break, exam week and intersemester period, the dates and whether service is regular or modified, with the notice page for the detail. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| periods | array | yes | Periods in the order the page lists them |
| title | string|null | yes | Page heading, e.g. "SHUTTLE-UM SERVICE CALENDAR: 2025-2026" |
No examples provided.
transportation_get_stop Get a Shuttle-UM stop ~54
One Shuttle-UM bus stop with its location and every route that serves it, from the published GTFS feed. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| stop | string | yes | Four-digit stop id, e.g. "1001" |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Stop id, e.g. "1001" |
| lat | number|null | yes | Latitude |
| lon | number|null | yes | Longitude |
| name | string|null | yes | Stop name, e.g. "Regents Drive Garage" |
| routes | array | yes | Ids of every route with a trip that serves this stop |
| wheelchair_boarding | string | yes | Wheelchair access as the feed records it |
No examples provided.
transportation_list_routes List Shuttle-UM routes ~50
Every Shuttle-UM bus route in the current timetable (regular routes such as 104 College Park Metro plus event routes), with whether each runs today, from the published GTFS feed. No login needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| feed | object | yes | The timetable the answers come from |
| routes | array | yes | Routes in id order |
No examples provided.
transportation_list_stops List Shuttle-UM stops ~107
Shuttle-UM bus stops from the published GTFS feed, filtered by a name fragment or by distance from a point. Without a filter, every stop. No login needed.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | – | Latitude to search around |
| lon | number | – | Longitude to search around |
| query | string | – | Only stops whose name contains this text, e.g. "Stamp" |
| radius_m | integer | – | Search radius in metres around lat/lon (default 500) |
| Name | Type | Req | Description |
|---|---|---|---|
| stops | array | yes | Matching stops: nearest first for a point search, otherwise by id |
No examples provided.
whoami Who am I ~32
Report the currently signed-in UMD user, or that nobody is signed in, and which services have a live session.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| attributes | – | yes | null when nobody is signed in |
| services | array | yes | Single sign-on services other tools depend on, and whether each is signed in |
| signed_in | boolean | yes | Whether a user is signed in |
| user | – | yes | null when nobody is signed in |
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.