Canvas MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CANVAS_TOKEN | No | A Canvas access token (Account → Settings → New access token), if your university allows them. It replaces the browser sign-in. | |
| CANVAS_BASE_URL | No | Your Canvas site | https://canvas.ox.ac.uk |
| CANVAS_MCP_HOME | No | Where the session and the sign-in browser profile are kept | ~/.canvas-mcp |
| CANVAS_DOWNLOAD_DIR | No | Where downloads go | SlideMate's first slides folder, else ~/CanvasFiles |
| CANVAS_BROWSER_CHANNEL | No | Browser for sign-in. "" uses Playwright's own Chromium. | chrome |
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| canvas_loginA | Sign in to Canvas. Opens a Chrome window on the user's computer at the university sign-in page; the user completes SSO + MFA there and the session is saved for the other tools. Tries a silent refresh first, so it often finishes without any window. |
| canvas_statusA | Check the Canvas session: which site, signed in as whom, and the download folder. |
| canvas_coursesA | List the user's Canvas courses (current ones, unless include_past). |
| canvas_browseA | Show a course's modules with their files, pages, links and assignments (with due dates). |
| canvas_deadlinesA | Assignments, quizzes and discussions due in the next |
| canvas_announcementsA | Announcements posted in the last |
| canvas_downloadA | Download one Canvas file (a |
| canvas_syncA | Download course files to /// (SlideMate's library if it's set up, else ~/CanvasFiles). With a |
| canvas_sync_statusA | Progress of a sync started by canvas_sync without a course: {"running": true, "progress": …} while it runs, then the result (a summary, files per course and any errors). |
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 9 tools
Most tools have clearly distinct purposes (login, status, courses, browse, deadlines, announcements), and the bulk vs. single-file split between canvas_sync and canvas_download is clarified in the descriptions. The main risk is name-level confusion between canvas_status (session info) and canvas_sync_status (background sync progress), which share the word 'status' but differ in scope.
All nine tools use a uniform canvas_ prefix with snake_case and largely verb/noun naming (canvas_login, canvas_courses, canvas_browse, canvas_download, canvas_deadlines). The only compound, canvas_sync_status, still fits the same pattern as the status companion to canvas_sync.
Nine tools is a well-scoped set for a Canvas file/course access server. Each tool earns its place: authentication, session check, course listing, browsing, two download paths, plus deadlines and announcements.
The read/download lifecycle is well covered: auth, session status, courses, module browsing, bulk and single-file downloads, deadlines, and announcements. Gaps exist for grades, assignment submission, and messaging/discussion participation, though these may be outside the server's stated file-fetching focus.