Brightspace MCP Server

Read your D2L Brightspace courses: grades, deadlines, assignments, announcements, files and lecture videos

By Rohan Muppa (individual) TypeScript Local · stdio ProductivityFiles and storage

55 popularity score ★ 62 ↓ 4.1k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
npx -y brightspace-mcp-server@latest setup
Claude CodeTerminal
claude mcp add brightspace -- npx -y brightspace-mcp-server@latest
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "brightspace": {
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "brightspace": {
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "brightspace": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.brightspace]
command = "npx"
args = ["-y", "brightspace-mcp-server@latest"]
Gemini CLITerminal
gemini mcp add --scope user brightspace npx -- -y brightspace-mcp-server@latest

Settings 12

D2L_BASE_URL Optional: Your school's Brightspace address, normally saved by setup. Must be https. Default https://purdue.brightspace.com.
D2L_HEADLESS Optional: Set to false to show the browser window during sign-in. Default true.
D2L_REMEMBER_MFA Optional: Ticks Microsoft's 'Don't ask again' box so later sign-ins skip two-factor. Default false.
D2L_TOTP_SECRET secret Optional: Authenticator setup key to answer code challenges locally, for machines without a keychain.
D2L_PASSWORDLESS Optional: Microsoft passwordless phone approval, so no password is read. Every sign-in needs the phone. Default false.
D2L_INCLUDE_COURSES Optional: Course ids to limit which courses are visible (D2L_EXCLUDE_COURSES hides ids).
D2L_ACTIVE_ONLY Optional: Set to false to include courses whose enrollment has ended. Default true.
D2L_CURRENT_ONLY Optional: Show only courses inside their current enrollment start and end dates. Default false.
D2L_RUNTIME_IDLE_SECONDS Optional: Seconds the shared background server waits with no question before it stops. Default 600.
D2L_TOKEN_TTL Optional: Seconds a saved token is treated as valid. Default 3600.
Set together: browser-free sign-in
D2L_SESSION_COOKIE secret Optional: Pasted d2lSessionVal and d2lSecureSessionVal cookies, to sign in without a browser.
D2L_ACCESS_TOKEN secret Optional: Pasted access token. Takes precedence over the cookie and the browser flow.

What it does

Brightspace MCP Server connects an AI client to a D2L Brightspace learning platform through the student's (or instructor's) own school account. It is Rohan Muppa's independent project, not a D2L product, and works with any school on Brightspace. Nine schools (Purdue, SUNY, Western, TU Delft, CUNY, Leiden, McGill, Ngee Ann Polytechnic, Javeriana Cali) have their sign-in flow built in behind a setup flag, and at other schools you can finish the login by hand in a browser window.

The published 5.1.27 build registers 27 tools in src/server.ts. They cover course lists, grades, assignments and rubrics, due dates, calendar events, announcements with their attachments, the syllabus and module tree, discussions, a keyword search within one course, rosters, groups and classmate emails. Others download files or fetch timestamped transcripts of course videos. Six dropbox tools are meant for course staff and read every student's submissions and feedback. Four prompts (weekly_briefing, grade_audit, study_planner, course_summary) come with it.

Sign-in happens on first use. A headless Chromium browser walks through the school's login with the password taken from the operating system's credential store, and the session is kept for later. Any two-factor number to approve shows up in the answer. The sign_in tool lets the assistant start a sign-in itself. Pasting a session cookie (D2L_SESSION_COOKIE) or token (D2L_ACCESS_TOKEN) skips the browser, useful in Docker or WSL.

Every client on a computer shares one background server and session, which stops after D2L_RUNTIME_IDLE_SECONDS idle (600 by default).

Two things the README does not say. src/utils/config.ts still reads D2L_PASSWORDLESS (Microsoft passwordless phone approval, off by default), though the README dropped it and LLMs.md calls the mode shelved. And D2L_BASE_URL falls back to https://purdue.brightspace.com when neither setup nor the environment names a school.

What it needs

RuntimeNode.js 22+
Runs onmacOS, Windows, Linux
D2L BrightspaceA student or staff login at a school that runs Brightspace
Also
  • A native credential store: macOS Keychain, Windows Credential Manager or Linux Secret Service
  • Chromium for browser sign-in, downloaded on first run

Run `npx -y brightspace-mcp-server@latest setup` once before first use. It saves the school address, your username and password, and the two-factor method, and registers the server with the clients it finds. On a Mac, answer Keychain's prompt with Always Allow so later sign-ins can read the saved password. A pasted cookie or token in D2L_SESSION_COOKIE or D2L_ACCESS_TOKEN replaces the browser sign-in.

Limits

  • Read only No tool submits, edits or deletes anything in Brightspace.
  • Not covered The dropbox submission tools answer only for instructors and TAs. Students get an instructor access note instead.
  • Size cap download_file puts files inline up to 10 MB (images 3.5 MB, extracted text 400,000 characters). Larger files need an absolute downloadPath.
  • Limit How often two-factor sign-in comes back is set by the school. With D2L_PASSWORDLESS every sign-in waits for a phone approval, so it is for interactive use only.
  • Limit A session from D2L_SESSION_COOKIE or D2L_ACCESS_TOKEN is not renewed and ends when Brightspace expires it.
  • Limit Keep the @latest tag in the command. Without it npx may run an older global install found on PATH (LLMs.md).
  • Not covered Courses whose enrollment has ended are hidden unless D2L_ACTIVE_ONLY is false.

No tool submits, edits or deletes anything in Brightspace. The dropbox submission tools only answer for instructors and TAs; students get a 403 note. Inline downloads are bounded at 50MB; saving to disk with downloadPath raises that to 2GB (LLMs.md). How often two-factor sign-in returns is set by the school, and D2L_PASSWORDLESS makes every sign-in wait for a phone approval, so it does not suit unattended use. A session from D2L_SESSION_COOKIE or D2L_ACCESS_TOKEN is not renewed and ends when Brightspace expires it. A course syllabus kept in an external tool such as Simple Syllabus comes back as a link only. Keep the @latest tag: without it npx may run an older global install.

Who it suits

Students who want an assistant to track deadlines, grades and course materials across their Brightspace courses, and instructors or TAs who want to read submissions and feedback without clicking through the web interface. It runs locally on your machine with your own school login and changes nothing in Brightspace, so it fits personal use well. It is less suited to shared or unattended machines, since it stores your password and session locally and two-factor prompts may need a person. We also hold two other Brightspace servers, brightspace-mcp and brightspace-d2l-mcp, from different authors.

Tools 27

24 only read, 2 change things, 1 can delete or overwrite.

get_my_courses
Lists your enrolled courses with enrollment start and end dates
get_my_grades
Returns grades for one course or for all courses
get_assignments
Lists assignments with due dates and submission status
get_assignment_rubric
Returns the full rubric for a dropbox assignment, with your graded result per criterion where shown
get_upcoming_due_dates
Collects due dates across all courses within a time window
get_calendar_events
Lists course calendar events, the next 7 days by default
get_announcements
Returns recent announcements as markdown, with their attachments
get_syllabus
Fetches a course's syllabus document
get_course_content
Returns a course's module tree and content topics
get_discussions
Lists discussion forums and recent posts
search_course
Keyword search over one course's content, announcements and discussions
get_roster
Returns a course classlist, staff only by default
get_my_groups
Lists your project or discussion groups in a course and their members
get_classlist_emails
Returns email addresses of classmates and instructors
download_file changes
Gets a course, submission or announcement file inline, or saves it to a local path
get_assignment_files
Extracts the text of files attached to an assignment
get_announcement_files
Extracts the text of files attached to an announcement
get_video_transcript
Returns a timestamped transcript of an embedded Kaltura or YouTube video
get_server_info
Reports version, runtime, paths, school address and request statistics
sign_in changes
Starts a Brightspace sign-in on this computer, or reports that the saved session is still valid
sign_out deletes
Deletes this computer's saved Brightspace session and clears the cache
get_dropbox_folders
Lists every assignment folder in a course with due dates and rubric flags
get_dropbox_submissions
Instructor/TA: every student's submissions to a dropbox folder
get_dropbox_user_submissions
Instructor/TA: all submissions by one student or group in a folder
get_dropbox_feedback
Reads saved feedback for a folder: your own, or another student's for staff
get_rubrics_for_object
Returns the rubric table attached to a dropbox folder
download_dropbox_submission_file
Instructor/TA: downloads one file from a student's submission

Prompts 4

weekly_briefing
Seven-day rollup of what is due, what is new and grade changes across courses
grade_audit
Reviews grades for one course or all, flagging missing or low items (courseId optional)
study_planner
Plans study time from upcoming due dates and events (daysAhead, 7 by default)
course_summary
Syllabus, outline, assignments and grades for one course (courseId required)

Similar servers