A Model Context Protocol server that provides tools for interacting with Moodle learning management systems. Enables Claude to access courses, grades, assignments, resources, and other Moodle features.
Server has 19 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, parameter descriptions are minimal or missing context. Input schemas are visible and properly typed, but output schemas are undocumented, LLMs cannot predict response structure. Error handling is absent; tools return generic error strings without recovery guidance. Security concern: login tool exposes credentials as parameters (should use server-side injection). No tool annotations (readOnlyHint/destructiveHint) despite clear read/write distinction. Composition is sound, tools are single-purpose and chainable via IDs.
Download a resource file from a course.
Get all assignments for a specific course with due dates and status.
Get calendar events for a specific course or all courses.
Get sections, resources, and activities of a specific course.
Get detailed metadata about a specific course (description, dates, format).
Get all grade items and scores for a specific course.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, nesting). Forces agents to guess what data is available after each call.
Credentials exposed as tool parameters (login tool). Passwords in parameters leak into agent logs and prompt history. Must use server-side secret injection.
No error recovery guidance. Tools return generic error strings (e.g., 'authentication failed') without actionable next steps. LLMs cannot self-correct or retry intelligently.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Get a summary of grades across all enrolled courses.
Get the current entry from a Moodle journal activity.
Get notifications and messages from Moodle.
Get information about the connected Moodle site and the logged-in user.
Get all upcoming assignments across all enrolled courses, sorted by due date.
Get upcoming deadlines and important dates across all enrolled courses.
Get the detailed profile of the currently logged-in user.
List all courses the student is enrolled in.
List all resources (files, URLs, etc.) in a course, optionally filtered by MIME type.
Log in to your Moodle account. This is the first step — provide your Moodle site URL, username, and password.
Submit text content for an online text assignment.
Submit or update a journal entry.
Update an existing assignment submission with new text content.
Missing tool annotations. No readOnlyHint/destructiveHint despite clear read/write distinction (submit_assignment, update_assignment, submit_journal are destructive). Agents cannot reason about side effects.
Parameter descriptions lack constraints. 'days_ahead' has no min/max (unbounded). 'limit' in get_notifications has no range. LLMs may pass absurd values (e.g., days_ahead=999999).