MCP server for D2L Brightspace (built for RIT myCourses) — check deadlines, read course material, submit assignments and post to discussions from any MCP client
16 tools with consistent verb-noun naming (list_, get_, submit_, reply_). All have descriptions (avg ~80 chars, within baseline 34-392). Input schemas present for all tools with typed parameters. However, parameter descriptions are minimal (often just 1-2 phrases), output schemas are not documented, and error handling lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Fuzzy matching on 'course' parameter is mentioned but not formally constrained. Two write operations (submit_assignment, reply_to_post) lack explicit confirmation patterns despite dry-run support via confirmToken.
Check the status of the myCourses authentication session
Download and extract text from a topic file (PDF or DOCX)
Get grade items and values for a course
Get detailed information about a content module, including its topics and structure
Get upcoming assignment and event deadlines across all courses
List announcements in a course
List assignments in a course
Output schemas not documented. LLMs cannot infer what fields to expect from list_courses, get_grades, read_posts, etc. This forces agents to guess at response structure and risks failed downstream tool calls.
Parameter descriptions are minimal (1-2 phrases). 'course' parameter described only as 'Course ID or name (fuzzy match supported)', no guidance on format, length, or how fuzzy matching works. Violates baseline that 100% of A+ tools have full param descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
List courses the user is enrolled in, with optional scope filtering (current, recent, or all)
List discussion forums in a course
List content modules in a course
List the user's submissions for an assignment
List discussion topics in a forum
Read posts in a discussion topic
Reply to a discussion post. Without confirmToken, returns a preview; with confirmToken, actually posts.
Submit files to an assignment. Without confirmToken, returns a preview; with confirmToken, actually submits.
Get the authenticated user's identity information
Write operations (submit_assignment, reply_to_post) lack explicit error handling and recovery guidance. No documented error codes, no guidance on what to do if submission fails, no per-item success/failure for batch operations.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe read-only tools from destructive ones without explicit hints. All 16 tools should be annotated.
Pagination not documented. list_courses, list_assignments, list_announcements, read_posts accept 'limit' but no 'offset', 'page', or 'next_cursor' parameters visible. No documented total count or pagination strategy.