School MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DOWNLOAD_PATH | No | Path where downloaded files will be saved | |
| CANVAS_API_KEY | Yes | Canvas API key for authentication | |
| CANVAS_API_URL | Yes | Base URL for the Canvas API | |
| GRADESCOPE_EMAIL | Yes | Email for Gradescope login | |
| GRADESCOPE_PASSWORD | Yes | Password for Gradescope login |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_school_accountsA | List the configured school accounts (e.g. columbia, mit) and show which one is active. |
| switch_school_accountB | Switch the active school account. Persists across restarts. Args: account: Account name, e.g. "columbia" or "mit" |
| get_deadlinesC | Get upcoming deadlines from Canvas and Gradescope. Args: days_ahead: Number of days to look ahead for assignments (default: 14) account: School account to use (defaults to the active account) |
| add_to_remindersB | Add upcoming deadlines to macOS Reminders. Args: days_ahead: Number of days to look ahead for assignments (default: 14) account: School account to use (defaults to the active account) |
| list_coursesC | List available courses from Canvas. Args: account: School account to use (defaults to the active account) |
| list_course_filesA | List every file download_course_files would fetch for a course, without downloading: modules, assignments (attachments + description links), Files tab, Pages, announcements, deduped by file id. Args: course: Course id, code (e.g. "20.201") or name fragment since: Only files created/updated since this date (YYYY-MM-DD) or N days ago ("7d") compare_dir: Local folder to check against; each file gets local.status have / changed / missing (matched by name+size, then content hash; any layout) account: School account to use (defaults to the active account) |
| download_course_filesA | Download files from a Canvas course (all of them, or a selection). Args: course_id: Canvas course ID download_path: Root to download into for this call (default: the saved download path; never changes it) file_ids: Only these file ids (from list_course_files) since: Only files created/updated since YYYY-MM-DD or N days ago ("7d") flat: Put files directly in the root instead of // folders account: School account to use (defaults to the active account) |
| get_course_pageA | Read a Canvas Page, such as a lecture page with its readings. Without
Args: course: Course id, code (e.g. "7.36") or name fragment page: Piece of the page title (e.g. "L15") or its url slug account: School account to use (defaults to the active account) Returns the page text plus its file links, each with |
| set_download_pathC | Set the default download path for Canvas files. Args: path: Path to save downloaded files to |
| get_download_path_infoA | Get the current default download path for Canvas files. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool targets a distinct resource+action: account listing/switching, deadline aggregation, reminders export, course listing, file preview vs. download, page reading, and download-path get/set. The only potentially overlapping pair (list_course_files vs. download_course_files) is explicitly framed as dry-run preview versus actual fetch, and get/set_download_path are a clean complementary pair.
All ten names follow a strict verb_noun snake_case pattern (list_, switch_, get_, add_, download_, set_) with no camelCase or bare-noun outliers. Pluralization and object naming (course_files, school_account, download_path) are used consistently across related tools.
Ten tools is well within the sweet spot and every one earns its place: account management (2), deadlines/reminders (2), courses and files (3), pages (1), path config (2). Nothing looks like filler, and no obvious operation is split into redundant variants.
The surface covers the core student workflow end-to-end: pick an account, list courses, preview and download files, read pages, pull deadlines, and push them to Reminders. Minor gaps remain — no way to add/remove a school account, no per-assignment detail or grades view, and no way to clear/reset the download path — but agents can work around these.