A Node.js-based tool for discovering and synchronizing course content from an AAST Moodle LMS instance, including downloading resources and assignments
This server has severe definition quality gaps. Tool names lack action verbs (discoverCourses, syncCourse, syncGoogleDrive are acceptable but parsePortal is vague). Most critically, NO input schemas are visible in the source code, only informal descriptions in the evaluation prompt. The downloadFile tool shows a schema in the prompt, but the actual tool registration code is not provided. Without seeing explicit tool definitions in index.js or the MCP server entry point, tool existence is inferred. Descriptions are present but generic (e.g., 'Discovers enrolled courses' lacks WHEN/WHY context). No output schemas documented. No error handling guidance. No parameter validation rules visible. This is a custom STDIO server with minimal MCP integration evidence.
Discovers enrolled courses from the AAST Moodle LMS dashboard by navigating to https://lms.aast.edu/my/, authenticating if necessary, and extracting course IDs and names from course links
Downloads a single file from a Moodle resource or assignment link using authenticated cookies, with deduplication based on local file mapping
Parses the AAST Moodle portal to extract UI design elements including logos, colors, typography, layout classes, and design tokens; downloads brand assets and captures a screenshot of the dashboard
Synchronizes course content from a specific Moodle course by course ID or name, downloading resources and assignments from sections, with support for extra Google Drive sources via gdown
Syncs a Google Drive folder to a local directory using the gdown command-line tool with --folder flag and --remaining-ok option
No input schemas visible in source code. Tool definitions appear to be inferred from descriptions rather than explicit MCP tool registration. Cannot verify JSON Schema compliance, type definitions, or parameter constraints.
Credentials file path (CRED_FILE) and session storage exposed in environment variables without secret injection pattern. Credentials stored in plaintext file on disk. No mention of secure credential handling.
Tool descriptions lack WHEN/WHY context. 'Discovers enrolled courses' does not explain when to call this vs other tools, what prerequisites exist, or what the output structure is. Descriptions average ~40 chars; baseline is 194 chars.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 27 | 2026-07-28+ | v2 |
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. No indication of return types, pagination, or field structure.
Error handling is minimal. Code logs errors to console but provides no recovery guidance, error classification, or actionable next steps for LLMs. No dry-run or confirmation pattern for destructive operations (syncCourse, downloadFile, syncGoogleDrive all write data).