nyu-brightspace-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nyu-brightspace-mcp What assignments are due this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
nyu-brightspace-mcp
MCP server for NYU Brightspace (brightspace.nyu.edu). Read-only: deadlines, assignments, grades, announcements, course content.
A rewrite of brightspace-mcp-server (Purdue-oriented, Microsoft Entra SSO) for NYU's Shibboleth + Duo login and NYU course conventions.
Setup
bun install
bun run build
node dist/index.js setup # optional: NetID + password (macOS Keychain) for auto-fill
node dist/index.js login # Chrome window: NetID + Duo, tick "trust this browser"
node dist/index.js statusRegister with Claude Code:
claude mcp add -s user brightspace -- node /absolute/path/to/nyu-brightspace-mcp/dist/index.jsLogin runs a real browser through playwright-core, trying in order: installed Google Chrome, Microsoft Edge, then Playwright's Chromium if already downloaded. Nothing is downloaded at install time, so ignore-scripts=true in .npmrc does not matter. With none of them installed, login fails with a hint to install Chrome or run npx playwright install chromium.
Related MCP server: Moodle MCP for Students
Auth model
loginsaves the full browser storage state (Brightspace, Shibboleth and Duo cookies) to~/.nyu-brightspace-mcp/session.json(mode 0600).API calls use the Brightspace session cookies directly.
When the Brightspace session expires, the server silently re-runs the SSO flow in headless Chrome. It succeeds without Duo while the Shibboleth session or Duo "trusted browser" cookie is alive. It never waits on a Duo push in the background; if interaction is needed, the tool error tells the model to call
login, which opens a visible window.With
setup, the NetID password lives in the macOS Keychain (servicenyu-brightspace-mcp) and is auto-filled on the Shibboleth page. Env varsNYU_NETID/NYU_PASSWORDalso work.
Tools
Tool | What it does |
| Deadlines across current courses from one calendar call, with submission/completion status, plus deadline sentences found in recent announcements (for Gradescope-only courses) |
| Current-semester courses by default; parses |
| Dropbox folders, submission status, scores, feedback, instructions, attachments |
| Quiz windows, time limits, attempts |
| Released grade items with weights and the final grade |
| Newest first, as markdown |
| Module outline with topicIds, file types, external tools (Gradescope, Ed), links |
| Text from PDF (per page), DOCX, PPTX, HTML, ZIP (inlines code/tex), plain text |
| Saves a topic file or assignment attachment to |
| Brightspace forums; course staff |
| Session check; interactive NetID + Duo |
| Raw GET on any Valence path ( |
Every course argument takes an org unit id or text: cs310, CSCI-UA 480, algorithms, OS, or a word from the course's module titles (crypto).
Config
Env var | Default |
|
|
|
|
|
|
|
|
| unset: try |
License
MIT
Available Tools
16 toolsapi_getARead-only
Escape hatch: GET any Brightspace Valence API path and return raw JSON. Use /lp/... or /le/... to auto-insert the version (e.g. /le/123456/news/), or a full /d2l/api/... path.
Inputs: path (required).
auth_statusARead-only
Check whether the NYU Brightspace session works and who is logged in.
Inputs: no named parameters.
download_fileA
Save a file locally: a content topic (topicId) or an assignment attachment (assignmentId + fileId from get_assignment).
Inputs: course (required), dir, fileId, topicId, +1 more.
get_announcementsARead-only
Course announcements, newest first, as markdown. Omit course for all current courses.
Inputs: days, full, limit, course.
get_assignmentARead-only
One assignment in full: instructions, attached files/links, my submissions, feedback and score.
Inputs: course (required), assignmentId (required).
get_assignmentsBRead-only
Brightspace assignments (dropbox folders) with due dates, submission status and scores. Omit course for all current courses.
Inputs: course.
get_classlistARead-only
Course staff (instructors, TAs) with NetIDs and emails; everyone=true lists all students too.
Inputs: course (required), everyone.
get_contentARead-only
Course content outline (modules and topics with topicIds, file types, links, due dates). Shows external tools like Gradescope/Ed and course website links.
Inputs: course (required), module.
get_discussionsCRead-only
Brightspace discussion forums/topics; pass forumId + topicId to read posts.
Inputs: course (required), forumId, topicId.
get_gradesARead-only
My released grades per item (points, weight, comments) and the final grade if released.
Inputs: course.
get_quizzesBRead-only
Brightspace quizzes/exams with open/due/close times, time limits and attempts.
Inputs: course.
get_upcomingARead-only
Upcoming deadlines across current courses (or one course): assignments with submission status, quizzes, readings with completion status, and instructor calendar events, in NYU local time. Also scans recent announcements for deadlines that live outside Brightspace (Gradescope, course websites). Start here for 'what's due'.
Inputs: days, course, pastDays, includeDone, +1 more.
list_coursesARead-only
List Brightspace courses with ids. Defaults to the current NYU semester; parses NYU codes like FA26_CSCI-UA_310_1_040.
Inputs: term.
loginA
Open a Chrome window for NYU NetID + Duo login. Use when other tools report the session is not logged in. The user must complete Duo on their phone. Waits up to ~100s; if still pending, tell the user to finish and call auth_status.
Inputs: no named parameters.
read_contentBRead-only
Read a content topic: extracts text from PDF (per page), DOCX, PPTX, HTML, ZIP (lists files and inlines code) and plain text/code. Binary files are saved to ~/Downloads/brightspace//.
Inputs: course (required), topicId (required), dir, save, +2 more.
search_contentARead-only
Find modules/topics by title across current courses, e.g. "syllabus", "hw3", "lecture 5 slides".
Inputs: query (required), course.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Each tool maps to a distinct Brightspace resource or action: auth, courses, assignments, quizzes, grades, announcements, content outline, content reading, file download, content search, discussions, roster, and API escape hatch. get_upcoming aggregates several sources but is clearly the 'what's due' summary, not a duplicate of the detail tools.
Most tools use lower_snake_case verb_noun names (list_courses, get_assignments, read_content, download_file, search_content), giving a predictable pattern. login is a bare verb and api_get reverses the object-verb order, so the pattern is not perfectly uniform.
16 tools is slightly above the ideal 3–15 range, but the broad Brightspace feature set (auth, courses, assignments, quizzes, grades, content, discussions, roster) justifies the count. No tool feels redundant, though a few could potentially be consolidated.
The read-only workflow is well covered: listing courses, retrieving deadlines/assignments/grades/announcements, reading and downloading content, searching, discussions, and classlist all have clear entry points and no dead ends. Missing write operations like assignment submission or discussion posting are notable if the server is expected to be a full Brightspace interface, but they appear out of scope for this read-oriented toolset.
Related MCP Connectors
Read your plat.plus courses, tasks, course pages, sessions, files and messages. Read-only.
Read users, groups, departments, courses, content and enrollments in iSpring Learn.
Read-only access to a student's recorded classes: transcripts, notes, slides and concept map.
1Read-only access to your dotstell notes, bookmarks, tasks, people and meetings.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI apps to read a student's courses, due dates, grades, missing work, announcements, modules, discussions, syllabus, and calendar events in a read-only way. It cannot submit, edit, or delete anything, and credentials go only to the user's own school.21180 npmMIT
- AlicenseAqualityBmaintenanceEnables AI apps to read a student's Moodle courses, upcoming and overdue due dates, assignment submission statuses, course grades, gradebook items and announcements. It is strictly read only, so it can never submit, edit or delete anything.17186 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to access a user's BNBU iSpace courses, course materials, assignments, submission status, upcoming deadlines, and optional confirmed assignment submissions.72MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to read a student's courses, assignments, exam schedule, weekly course content, and Panopto lecture recordings with timestamped transcripts (transcribing audio when no captions exist). Access is read-only and uses the user's own credentials, which stay local.7MIT