MCP server for D2L Brightspace: connect Brightspace to Claude, ChatGPT, Cursor, Copilot and any AI agent. One-command setup at any school with normal browser sign-in (SSO, Duo, MFA). Due dates with real submission status, grades, assignments, content, announcements.
The Brightspace D2L MCP server has 13 read-only tools with straightforward names (all verb-prefix using 'get_' or 'download_'). However, the source code provided is incomplete, I can only see package.json, tool-helpers.ts (error handling), and partial server.ts. No actual tool implementation files or schemas are visible. Based on the visible code: 1. NAMING: All tools follow verb-noun convention (get_*, download_*), which is positive. Names are clear and action-oriented (e.g., 'get_upcoming_due_dates' vs vague alternatives). 2. DESCRIPTIONS: Tool descriptions are provided in the server spec above and appear reasonable in length (40-100 chars approx). However, I cannot verify parameter descriptions because no parameter schemas are visible in the source. 3. SCHEMAS: CRITICAL ISSUE, No input/output schemas are visible in the provided source code. The files src/tools/get-todo.ts, src/tools/get-my-courses.ts, etc. are referenced but their content is not included. Without seeing the actual tool registration code and schema definitions, I cannot score parameter types, descriptions, or output schemas. ERROR HANDLING: The tool-helpers.ts file shows thoughtful error sanitization with recovery guidance (e.g., AuthRequiredError returns a login command; RateLimitError suggests waiting; NetworkError hints at connectivity). This is positive, but only applies to the response layer, not parameter validation or tool-specific errors. 5. OUTPUT STRUCTURE: The server returns JSON-formatted responses via toolResponse(), which is structured. However, without seeing actual tool implementations, I cannot assess whether output schemas are documented or whether pagination is properly handled for list tools. SCORING LIMITATIONS: Because the actual tool files are not provided, I must score conservatively. I can infer naming from the tool list and see that error responses are well-designed, but I cannot verify: - Parameter schemas (types, enums, constraints) - Parameter descriptions (required for each param) - Output field documentation - Pagination support for list tools - Whether credentials are properly hidden The visible code (error handling, response shaping) suggests professional engineering, but incomplete source visibility forces a low overall score per the rubric's conservative principle.
Download a file from Brightspace
Get announcements from courses
Get files attached to an assignment submission
Get assignments from a course
Get classlist with email addresses
Get course content: modules, topics, files, and learning objects
Get discussion posts and threads from a course
List all your courses with basic info: name, code, status, semester
No input schemas visible in provided source code. Cannot verify parameter types, validation, descriptions, or constraints. Tool files referenced (src/tools/*.ts) but content not provided.
Parameter descriptions not visible in provided source. Without per-parameter documentation, LLMs cannot infer parameter meaning (e.g., 'course_id' vs 'course_name', required vs optional, format constraints).
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
Get your current grades across all courses
Get course roster with student information
Get course syllabus
Get what to do next: upcoming due dates, new announcements, unread discussion posts, grades
Get upcoming due dates for assignments and quizzes with real submission status
Output schemas not documented in visible source. Cannot verify whether list tools (get_announcements, get_assignments, get_discussions, get_roster) support pagination (limit, offset, total_count, next_cursor).
No tool annotations visible (readOnlyHint, destructiveHint, idempotentHint). While all 13 tools are marked READ_ONLY in the spec, the actual tool registration code does not appear to use MCP's toolAnnotations feature to advertise this to clients.
Error handling in tool-helpers.ts is comprehensive but downstream tool implementations not visible. Cannot verify whether each tool implements input validation with actionable error messages.