# RohanMuppa/brightspace-mcp-server [Health: Active]

**Category:** 🎓 Education  
**Repository:** https://github.com/RohanMuppa/brightspace-mcp-server  
**GitHub Stars:** 44  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/rohanmuppa-brightspace-mcp-server

## Description
MCP server for D2L Brightspace LMS. Check grades, due dates, assignments, announcements, syllabus, rosters, discussions, and course content. Works with any school that uses Brightspace. Install via npx brightspace-mcp-server@latest.

## Tools
Capabilities this server exposes over MCP:

- **check_auth** — Check if you are authenticated with Brightspace. Run the brightspace-auth CLI first to authenticate. Use this when the user asks if they're logged in, if authentication is working, or when other tools return auth errors.
- **get_my_courses** — Fetch your enrolled Brightspace courses with names, codes, and IDs. Use this when the user asks about their courses, enrolled classes, what they're taking this semester, or needs a course ID for other queries.
- **get_upcoming_due_dates** — Fetch upcoming due dates across all your courses, derived from the due dates on assignments (dropbox folders) and quizzes themselves. Use this when the user asks about deadlines, what's due, upcoming work, or what they need to do this week.
- **get_my_grades** — Fetch your grade breakdown for a specific course or all enrolled courses. Shows grade items with points, percentages, and comments. Use this when the user asks about grades, scores, marks, GPA, academic performance, or how they're doing in a class.
- **get_announcements** — Fetch recent announcements from your courses. Can filter to a specific course or get announcements across all courses. Use this when the user asks about announcements, news, updates from instructors, recent posts, or what professors said.
- **get_assignments** — Fetch assignments and quizzes for a specific course or all enrolled courses. Shows dropbox submissions and quizzes with due dates, status, and rubric info. Use this when the user asks about assignments, homework, what to submit, quizzes, or assignment details and rubrics.
- **get_assignment_files** — Read the files an instructor attached to an assignment: the spec or instructions PDF, a starter workbook, a rubric document. Call it with just courseId to see which assignments have attachments, then with folderId and fileId to read one. Use this when the user asks what an assignment requires, what the instructions say, or to summarize a handout. Returns the text itself. Use download_file instead when the user wants the file saved to disk.
- **get_course_content** — Fetch the content tree for a course showing modules, topics, files, and links. Use this when the user asks about course materials, lecture slides, uploaded files, content structure, or what's in a course module. Use moduleTitle to filter to a specific module (e.g. 'Labs', 'Staff', 'Homeworks') instead of fetching the entire tree. Use maxDepth to limit recursion depth for a table-of-contents view.
- **download_file** — Download a file from course content or assignment submissions to a local directory. Use this when the user wants to download, save, or get a file from Brightspace course content or dropbox submissions. IMPORTANT: You MUST ask the user where they want to save the file before calling this tool. Never guess or assume a download directory. After identifying the file to download, suggest a clean readable filename to the user (e.g., 'Lecture 7 - Memory Management.pdf' instead of 'L07_CS251_2026SP_v2.pdf') and ask if they'd like to rename it. Pass their preferred name as customFilename, or omit it to keep the original.
- **get_classlist_emails** — Fetch all email addresses for everyone in a course — instructors, TAs, and students. Use this when the user wants a list of emails for a class, needs to email the whole class, or wants contact info for everyone enrolled.
- **get_roster** — Fetch the roster for a course including instructors, TAs, and optionally students with their names, emails, and roles. Use this when the user asks about classmates, instructor contact info, TA emails, professor names, or who's in a class. By default returns only instructors and TAs for privacy. Use includeStudents to get full class list.
- **get_syllabus** — Fetch the syllabus/overview text and optional attachment for a course. Returns the course overview description as markdown. If downloadPath is provided, also downloads the syllabus attachment (e.g. PDF). IMPORTANT: You MUST ask the user where they want to save the file before calling this tool with a downloadPath.
- **get_discussions** — Fetch discussion board content for a course including forums, topics, and posts. Use this when the user asks about discussion boards, forum posts, class discussions, or wants to see what's been posted. Provide just courseId to list all forums and their topics. Add forumId to get topics and posts for a specific forum. Add both forumId and topicId to get all posts in a specific discussion topic.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "brightspace-mcp-server": {
    "command": "npx",
    "args": ["-y","brightspace-mcp-server"]
  }
}
```

## Documentation

## What RohanMuppa/brightspace-mcp-server MCP server does

RohanMuppa/brightspace-mcp-server MCP server gives an AI client read-only access to information in a D2L Brightspace account. It can list enrolled courses, inspect grade items, find upcoming assignment and quiz deadlines, retrieve announcements, and read course content such as modules, topics, files, and links.

The available tools also cover course administration and communication data. An agent can retrieve syllabi, inspect discussion forums and posts, identify instructors and TAs, and request roster or class email information. Assignment attachments can be read as text, including supported PDF, Word, Excel, and PowerPoint documents. Files from course content or assignment submissions can be downloaded to a local directory.

The server does not submit assignments, post discussions, or otherwise modify Brightspace data. It is intended for querying and organizing course information, such as building a study plan from deadlines or summarizing the requirements in attached rubrics.

## How it works

After authentication, the MCP tools query the user’s Brightspace courses on demand. Course-specific operations generally use a Brightspace course ID, which can be obtained from the enrolled-course list. Some tools accept an optional course filter and can search across all enrolled courses.

The due-date tool derives deadlines from assignment folders and quizzes. Grade results include grade items, points, percentages, and comments, while assignment results can include submission status, due dates, rubric information, and Brightspace URLs. Course content can be narrowed by module title or recursion depth. Discussion results can be requested at the forum, topic, or post level.

For downloads, the user must choose the destination directory before the tool is called. The server also supports a custom filename. Assignment attachments can instead be returned as text when the user wants a summary rather than a saved file.

## Setup and configuration

RohanMuppa/brightspace-mcp-server MCP server requires Node.js 18 or later. Run `npx brightspace-mcp-server setup` to start the configuration and login flow. Purdue and SUNY users can use the corresponding setup flags; other schools provide their Brightspace URL during setup. The wizard handles login and MFA, then can configure Claude Desktop and Cursor and print configuration for ChatGPT Desktop when available.

For manual MCP registration, use `npx -y brightspace-mcp-server@latest` as the server command. Run setup first so the local credentials and session information exist. If a session expires, `npx brightspace-mcp-server auth` starts authentication again.

Credentials are stored in `~/.brightspace-mcp/config.json` with user-only permissions. Session tokens and cookies are stored in `~/.d2l-session/` using AES-256-GCM encryption. Brightspace traffic uses HTTPS. The optional `D2L_NO_UPDATE_CHECK=1` variable disables the startup update check.

## Tools and capabilities

RohanMuppa/brightspace-mcp-server MCP server exposes tools for:

- Checking authentication and listing enrolled courses.
- Retrieving grades, assignments, quizzes, due dates, and announcements.
- Reading syllabi, course modules, assignment attachments, and discussion posts.
- Downloading course-content files and assignment-submission files.
- Listing instructors, TAs, students, roles, and class email addresses.
- Filtering course content by module and limiting content-tree depth.

The roster tool defaults to instructors and TAs and can optionally include students. The class-email tool returns email addresses for everyone in a course, so clients should handle that information appropriately.

## Limitations and notes

RohanMuppa/brightspace-mcp-server MCP server depends on the school’s Brightspace deployment and authentication flow. Session duration and MFA behavior are controlled by the institution. Schools using different login flows may require additional handling, and the documented presets include Purdue and SUNY options.

The server is read-only. It cannot submit work, send course messages, create discussion posts, or change grades or course content. Download operations require an explicit user-selected path, and the server should not infer one. Large rosters may be truncated unless the available limit is increased, according to the tool behavior described by the project.

_Full upstream README: https://allmcps.com/mcp/rohanmuppa-brightspace-mcp-server/readme_

