MCP server for Brightspace (D2L). Check grades, due dates, assignments, announcements, rosters, syllabus & course content via Claude, ChatGPT, Cursor, Windsurf, or any MCP client. Works with any school. npm: npx brightspace-mcp-server@latest
Brightspace MCP Server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> **By Rohan Muppa, ECE @ Purdue**
Lets your AI see your Brightspace classes, so you can just ask:
> "What's due this week?" · "Am I passing all my classes?" · "Summarize today's announcements" · "Turn my lecture slides into flashcards"
Works with Claude Desktop, Claude Code, Cursor, ChatGPT Desktop, Windsurf, and any other app that supports MCP (the standard way to plug tools into an AI). It only **reads** your courses — it never submits, edits, or deletes anything.
Get started in 3 steps
1. **Install Node.js** (version 20 or newer) if you don't have it. Download, run the installer, done.
2. **Open a terminal and run the setup:**
It asks for your school's Brightspace address, your username and password, and how you normally do two-factor sign-in (phone approval, authenticator code, or a browser window). Your password goes into your computer's own password store (Keychain on Mac, Credential Manager on Windows), never into a file. At the end it connects itself to Claude Desktop, Cursor, Antigravity, Codex, or Claude Code if you have them. If one of them already has a brightspace entry pointing somewhere else (an old local build, a fork), setup shows you that entry and asks before replacing it.
**On a Mac:** when Keychain asks whether node may use the saved Brightspace password, choose **Always Allow**, not just Allow. That lets later sign-ins (the auth command and questions from your AI app) read it without asking again.
3. **Restart your AI app and ask it something** — the first question signs you in. If your phone asks you to approve a sign-in, approve it and ask again.
At one of these schools, add the flag and skip typing the address: --purdue, --suny, --western, --tudelft, --cuny, --leiden, --mcgill, --ngeeann, --javeriana.
**Rather have the AI install it for you?** Paste this into Claude Code, Cursor, Windsurf, Copilot, or Codex:
Using a different AI app? Add the command npx -y brightspace-mcp-server@latest to its MCP settings (on Windows: cmd /c npx -y brightspace-mcp-server@latest). Exact steps for each app: docs/troubleshooting.md.
Does my school work?
If your school uses D2L Brightspace, yes. These have automatic sign-in built in:
| School | Sign-in | Flag |
|--------|---------|------|
| Purdue | Microsoft (phone approval, authenticator code, or browser) | --purdue |
| SUNY | Shared site with a campus picker | --suny |
| Western University | Microsoft | --western |
| TU Delft | NetID (no two-factor) | --tudelft |
| CUNY | CUNY Login, authenticator code each time | --cuny |
| Leiden University | SURFconext → Microsoft | --leiden |
| McGill University | Microsoft Entra | --mcgill |
| Javeriana Cali | OneGate (password + authenticator code) | --javeriana |
| Ngee Ann Polytechnic | Microsoft Entra | --ngeeann |
| Any other D2L school | Paste your Brightspace address; if the login page isn't recognized, a browser window opens so you can sign in by hand | none |
School-specific quirks: docs/sign-in.md.
Things to ask
| About | Try |
|-------|-----|
| Grades | "Am I passing all my classes?" · "Compare my grades across courses" · "What did my professor say about Mini-Assignment 1?" (own assignment feedback is read from every route Brightspace documents for students) · "Is there feedback on my midterm?" (quiz-scored grades link to the quiz, since quiz feedback, including feedback only viewable in LockDown Browser, isn't readable through the API) |
| Due dates | "What's due in the next 48 hours?" · "Build me a study schedule for the week" |
| Assignments and rubrics | "What does the lab 4 spec actually ask for?" · "Why did I lose points on the analysis criterion?" |
| Quizzes and exams | "Which quizzes close this week?" · "Is there a midterm in the gradebook that isn't on my assignments list?" (quizzes are collected from the quiz list, the course content, and the gradebook, so a closed quiz or one the list leaves out still shows up; each course says whether its quiz sources all answered, and if Brightspace refused one it's marked incomplete rather than passed off as everything; "complete" means every source answered, not that every quiz is guaranteed to be listed. A gradebook column linked to a quiz the list omits now shows up as a quiz with its dates and attempts instead of a bare grade-only row when the quiz can be read. Gradebook-only rows now also appear on tenants that send only the documented GradeType on grade columns; hidden grade columns, hidden assignments and inactive quizzes never produce one. Content quizzes beyond the first 30 per course are listed from the course content alone and the course is marked incomplete. Quiz rows may also say whether they are open, closed, or not yet open, and mark a quiz whose details Brightspace would not return; gradebook lookups for unlisted quizzes are capped at 20 per course, or 5 when the course's quiz tool can't be identified) |