
Brightspace
io.github.JhostinAleckPublished by GitHub account JhostinAleckv1.3.2Updated Nov 5, 2026
D2L Brightspace MCP server: courses, grades, rubrics, feedback, course files, calendar. Multi-auth.
Overview
MCP server for D2L Brightspace that lets an assistant read your courses, grades, assignments, rubrics, feedback, content, calendar and discussions.
- What you can do
- Check authentication and list enrolled courses, groups and rosters
- Read grades, feedback, rubrics, quizzes and quiz attempts
- Browse assignments, due dates, submitted and instructor files, syllabus and course content topics
- Read announcements, discussions, calendar events, notifications and full-text course search
- Inspect diagnostics, cache state and the local write audit log
- Optionally submit assignments, post discussion replies and mark announcements read when writes are enabled
- When to use it
- Useful for students or instructors on D2L Brightspace who want an assistant to summarize coursework, track due dates, audit grades or plan study time from their own account data.
- Requirements
- Runs locally via npm package brightspace-mcp (Node.js 20 or newer) over stdio; needs a Brightspace base URL and a config file at the path in BRIGHTSPACE_CONFIG. Authentication uses one of several strategies: a Valence API token, username and password, a headless browser login (Playwright with Chromium), or pasted session cookies; MFA via TOTP, Duo Push or manual prompt. Secrets are referenced through env, keychain or encrypted file. Optional Redis for shared cache.
Installation
In SourceWeft
- Open Brightspace in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
brightspace-mcp
[CI] [Docs] [npm version] [License: MIT] [Node.js]
MCP server for D2L Brightspace. Gives Claude (and any MCP-compatible client) access to your courses, grades, assignments, content, calendar, and more — with multi-strategy authentication, full MFA support, and production-grade resilience built in.
Quick start
The interactive wizard handles everything: base URL, auth strategy, MFA, credential storage, and auto-registration with Claude Desktop / Cursor / Windsurf.
For CI pipelines or DevContainers with no TTY, use the non-interactive init command instead:
Documentation
Deep-dive guides live in docs/ — start with docs/README.md.
For AI assistants and contributors, AGENTS.md is a one-page map of the repo.
Table of contents
- Installation
- Authentication strategies
- MFA strategies
- Configuration reference
- Output: timezone and language
- Redis cache
- Write operations
- Available tools
- MCP Resources
- MCP Prompts
- TUI dashboard
- Register with an MCP client
- CLI reference
- Docker
Installation
npx (recommended — no install needed)
Global install
From source
Requirements: Node.js ≥ 20.
Staying up to date
- npx (recommended) — the MCP client config written by
setuprunsnpx --yes brightspace-mcp@latest serve, so every client restart picks up the newest release. Nothing else to do. - Global install —
npm install -g brightspace-mcp@latest(brightspace-mcp upgradechecks npm and prints the right command). - Docker —
docker pullthe latest image and recreate the container.
The server checks npm at most once a day (3 s timeout, cached in ~/.brightspace-mcp/update-check.json). When a newer version exists — or when your installed version has been deprecated because of a security fix — the notice is appended to the first tool response of the session, so your assistant tells you about it. It also shows up under update in get_diagnostics. Set BRIGHTSPACE_NO_UPDATE_CHECK=1 to opt out.
Authentication strategies
Pick the strategy that matches your Brightspace setup. Run npx brightspace-mcp@latest setup and it will walk you through the right one.
API Token (simplest)
Requires a Valence API token from your Brightspace admin panel.
Headless (username + password)
Automates HTTP-level login — no browser window. Supports all MFA strategies including Duo Push.
Browser (Playwright)
Launches a headless Chromium instance and automates the login UI. Best for SSO flows (Microsoft Azure AD, SAML) where the login page has complex JavaScript.
The setup wizard includes a Microsoft SSO preset that fills all selectors automatically.
Session Cookie
Paste the D2L session cookies from your browser's DevTools. Useful when other strategies are blocked.
MFA strategies
TOTP example
Duo Push example
Configuration reference
Full config file (~/.brightspace-mcp/config.yaml):
Credential references
Secret values are never stored in plain text. Use ref: notation to point to the actual value:
Output: timezone and language
All tool responses are formatted in your configured timezone and language.
Run brightspace-mcp setup and choose your timezone and language. Or set it in ~/.brightspace-mcp/config.yaml.
Redis cache
When running multiple instances or want cache persistence across restarts, enable Redis:
1. Add the redis section to config:
2. Install ioredis (optional dependency):
3. Start Redis and the server:
The domain cache (courses, grades, assignments, etc.) automatically uses Redis as persistent layer when the redis: section is present in config. Session tokens are stored with TTL derived from the token expiry.
Write operations
Write tools (submit_assignment, post_discussion_reply, mark_announcement_read) are disabled by default and require two separate opt-ins:
1. Config file:
2. CLI flag:
All write operations:
- Require a client-supplied
idempotency_key(8–128 chars). Repeat calls with the same key return the cached response without re-executing. - Emit a WARN-level audit log line with correlation ID, tool name, and redacted args.
- Respect
dry_run: trueto return a preview response without touching D2L.
Available tools
Read tools (always available)
Write tools (require --enable-writes)
MCP Resources
Four stable URIs for Brightspace content (readable by any MCP client via resources/read):
Obtain IDs from tools like list_my_courses, get_assignments, get_announcements.
MCP Prompts
Four pre-built prompt templates visible in your MCP client's prompt picker:
TUI dashboard
Full-screen interactive terminal UI (Ink + React). Six tabs navigated with Tab / → / ←:
Press Ctrl+C to exit.
Register with an MCP client
See docs/clients.md for Claude Desktop, Cursor, and Windsurf snippets, or run brightspace-mcp setup which auto-detects and registers for you.
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
CLI reference
Docker
Standalone
With Redis (docker-compose)
The config.yaml inside ~/.brightspace-mcp/ must have the redis: section pointing to redis://redis:6379 when using the compose profile.
Architecture highlights
- Resilience: retry with exponential backoff + jitter, circuit breaker (5 failures → 30s cooldown), request coalescing, bulkhead (max 5 concurrent requests)
- Cache tiers: HTTP response cache (L1, in-memory, 60s TTL) + domain cache (L2, layered memory → file or Redis)
- Security: HTTPS-only transport, secrets redaction in all log output, OS keychain integration, AES-256-GCM encrypted credential file, session tokens expire with the D2L token
- DDD structure: bounded contexts (
assignments,authentication,calendar,communications,content,courses,grades,groups,notifications,quizzes) with clean domain / application / infrastructure separation
License
MIT © Jhostin Aleck
Source: README.md at commit 1b85c44
Tools
0Version history
3- v1.3.2LatestNov 5, 2026
- v1.2.0Sep 28, 2026
- v1.1.1Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts