loading…
Search for a command to run...
loading…
MCP server for D2L Brightspace with multi-strategy authentication and opt-in write operations.
MCP server for D2L Brightspace with multi-strategy authentication and opt-in write operations.
CI npm version License: MIT Node.js
MCP server for D2L Brightspace with multi-strategy authentication, TOTP/MFA support, retry + circuit breaker + cache tiers, and opt-in write operations.
npx brightspace-mcp serve
docker pull ghcr.io/jhostinaleck/brightspace-mcp:latest
docker run --rm -i \
-v "$HOME/.brightspace-mcp:/config:ro" \
-e BRIGHTSPACE_CONFIG=/config/config.yaml \
ghcr.io/jhostinaleck/brightspace-mcp:latest serve
# Default — in-memory cache
docker compose up
# With Redis cache backend
BRIGHTSPACE_CACHE_BACKEND=redis BRIGHTSPACE_REDIS_URL=redis://redis:6379 \
docker compose --profile redis up
git clone https://github.com/JhostinAleck/brightspace-mcp.git
cd brightspace-mcp
npm install
npm run build
node build/cli/main.js serve
Create ~/.brightspace-mcp/config.yaml:
default_profile: my_school
profiles:
my_school:
base_url: https://your-school.brightspace.com
auth:
strategy: api_token
api_token: { token_ref: env:BRIGHTSPACE_API_TOKEN }
Then export your token and run the server:
export BRIGHTSPACE_API_TOKEN="<your-token>"
npx brightspace-mcp serve
Run the interactive setup:
npx brightspace-mcp setup
The wizard:
~/.brightspace-mcp/config.yaml with 0600 permissionsOther CLI commands:
brightspace-mcp auth # Re-authenticate (test config)
brightspace-mcp config show # Print current config (secrets redacted)
brightspace-mcp config show --resolved # Show secret refs as [redacted]
brightspace-mcp config validate # Validate config without running server
brightspace-mcp config set <path> <value>
brightspace-mcp cache clear # Clear both memory and file cache
Write tools (submit_assignment, post_discussion_reply, mark_announcement_read) are OFF by default. To enable:
In ~/.brightspace-mcp/config.yaml:
writes:
enabled: true
dry_run: false # set true to preview without mutating D2L
Pass --enable-writes to serve:
brightspace-mcp serve --enable-writes
Both gates are required. All writes:
idempotency_key (8-128 chars) — repeat calls with the same key return the cached response without re-executing against D2L.writes.dry_run: true to return a preview without calling D2L.See docs/clients.md for Claude Desktop, Cursor, and Windsurf snippets.
check_auth, list_my_courses, get_my_grades, get_assignments, get_upcoming_due_dates, get_feedback, get_roster, get_classlist_emails, get_syllabus, get_course_content, get_announcements, get_discussions, get_calendar_events, clear_cache, get_diagnosticsMIT © Jhostin Aleck
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"brightspace-mcp": {
"command": "npx",
"args": []
}
}
}