Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoHTTP listen address. The Docker image uses 0.0.0.0.127.0.0.1
PORTNoHTTP listen port.8787
DB_PATHNoOverrides the database path.
DATA_DIRNoWhere the database and cache live. Defaults to the OS user data directory (~/Library/Application Support/canvas-readonly-mcp on macOS, ~/.local/share/canvas-readonly-mcp on Linux, %APPDATA%\canvas-readonly-mcp on Windows).
CACHE_DIRNoOverrides the cache directory.
DISPLAY_TZNoTime zone for displayed times (IANA name, e.g. Europe/Stockholm). Defaults to your Canvas profile's time zone.
MCP_SECRETNoAt least 32 characters; part of the connector URL. Required for --http mode.
MAX_FILE_MBNoDownload size limit in MB.50
SNAPSHOT_ATNoDaily snapshot time in DISPLAY_TZ, or off.04:30
CACHE_MAX_MBNoExtracted-text cache size in MB; least recently used entries are evicted.500
CANVAS_TOKENYesYour Canvas personal access token.
ENABLE_RAW_GETNoSet false to remove canvas_api_get.true
SNAPSHOT_SCOPENoWhich courses to snapshot: dashboard = the courses on your Canvas dashboard; active = every active enrollment. Courses whose end date has passed are skipped either way.dashboard
CANVAS_BASE_URLYesYour Canvas address, e.g. https://canvas.yourschool.edu or https://yourschool.instructure.com.
CRAWL_MAX_PAGESNoCrawl limit per course.200
SNAPSHOT_COURSESNoOnly these course ids (overrides SNAPSHOT_SCOPE). id:label:role overrides the label and role.
SNAPSHOT_ENABLEDNoTurn the snapshot/change-log feature off entirely.true
SNAPSHOT_EXCLUDENoCourse ids to skip.
SNAPSHOT_EXTRACTNoWhich files' text to hash for change detection: linked, all (also files only in the files index), or none.linked
ANNOUNCEMENT_DAYSNoAnnouncement crawl limit per course.730
EXTRACT_MAX_PAGESNoText extraction page limit.500
EXTRACT_TIMEOUT_SNoText extraction timeout in seconds.60
DOWNLOAD_TIMEOUT_SNoDownload timeout in seconds.60
SNAPSHOT_MAX_AGE_HNoRefresh at startup / on demand when older than this.20
CANVAS_HOST_ALIASESNoOther hostnames of the same Canvas, comma-separated (e.g. yourschool.instructure.com when you use a custom domain). Links to them are recognized.
EVENT_RETENTION_DAYSNoHow long change events are kept.120

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
canvas_whoamiA

Return the Canvas profile the token belongs to. Use to verify the connection works.

canvas_list_coursesA

List your Canvas courses (active by default) with your role in each. Returns course ids needed by other tools.

canvas_whats_newA

Recent activity across all active courses (announcements, new/changed assignments, discussions, grades, messages) since a timestamp. Best tool for a daily check.

canvas_list_planner_itemsA

Everything with a date in a window across courses: assignments, quizzes, discussions, calendar events, with submission status. Default: today through 14 days ahead.

canvas_list_assignmentsC

Assignments in a course with due dates and your submission status.

canvas_get_assignmentB

Full details of one assignment, including the description as text.

canvas_list_announcementsA

Course announcements, newest first. Defaults to all active courses, last 14 days.

canvas_get_syllabusB

Course syllabus / course overview text, if the course uses Canvas's syllabus page.

canvas_list_modulesB

Course modules with their items (pages, files, assignments, links) — often the week-by-week structure of a course.

canvas_list_pagesB

Wiki pages in a course (title + url slug for canvas_get_page).

canvas_get_pageA

Read a course page as text. Use page_url slug from canvas_list_pages/list_modules, or 'front_page'. File links are shown inline as (file:) and listed in file_links — pass the id to canvas_read_file.

canvas_list_filesB

Files in a course, newest first. Uses the course files index when your role may see it; otherwise (common for students) falls back to the files linked from pages, modules, assignments and announcements, like canvas_list_linked_files.

canvas_list_linked_filesA

Find the course's files (slides, lab instructions, exercise sheets) by scanning the front page, pages reachable from it and from modules, the syllabus, assignment descriptions, announcements and module items. Works for students, unlike canvas_list_files. Returns file_id, display_name, size, linked_from — pass file_id to canvas_read_file.

canvas_read_fileA

Download a course file server-side and return its text: PDF (per page), PPTX (per slide, with speaker notes), DOCX (per section), plain text/code, ZIP (listing). Give file_id, or url = any Canvas file link (e.g. https://canvas.school.edu/courses/1/files/2?verifier=…&wrap=1). Long documents: use pages (e.g. "1-5", "3,8-10") — the output says when it was truncated and which range to request next.

canvas_list_calendar_eventsB

Canvas calendar events (lectures, seminars, exams if teachers added them) in a date range.

canvas_get_gradesB

Your own submissions in a course (as a student) with scores, grades, late/missing flags and teacher comments.

canvas_api_getA

Escape hatch: GET any Canvas REST endpoint under /api/v1 (read-only). Example path: /api/v1/courses/123/discussion_topics

canvas_changes_sinceA

What changed in your courses since a time, from stored snapshots (taken daily, and refreshed in the background when stale): added/changed/removed pages, assignments (due dates, grades), announcements, discussions, quizzes, events, files (with which PDF pages changed), with old→new field values and short text diffs. Grouped by course, newest first. Times are UTC. Default since: 26 hours ago. The best first call for a daily check.

canvas_course_snapshotA

The stored state of a course from the latest snapshot (no Canvas calls), compact. Use kinds (page, module, assignment, announcement, discussion, quiz, event, syllabus, file) to keep it small, e.g. ["assignment"] for all deadlines and grades.

canvas_snapshot_statusA

Health of the snapshot job: courses and your role in each, last run per course, duration, item counts, errors (e.g. 403s), next run, DB size.

canvas_run_snapshotA

Take a snapshot now (read-only GETs to Canvas) for one or all active courses and return the change events it produced. Waits up to wait_s seconds; if it takes longer it continues in the background — check canvas_snapshot_status / canvas_changes_since later.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 21 tools

Disambiguation3/5

Many tools have overlapping purposes: canvas_whats_new and canvas_changes_since both claim to be best for a daily check, canvas_list_files and canvas_list_linked_files both find course files, and snapshot/list tools can return similar course data. Descriptions help clarify some boundaries, but the set still has multiple ambiguous choices for an agent.

Naming Consistency4/5

All tools consistently use the canvas_ prefix and snake_case, with mostly verb_noun naming such as canvas_list_courses and canvas_get_assignment. There are minor deviations like canvas_whoami, canvas_whats_new, and noun-first names like canvas_course_snapshot, but the overall convention is predictable.

Tool Count3/5

21 tools is on the heavy side for the rubric's preferred range, and some tools are redundant or overlapping (two daily-check tools, two file-listing approaches, snapshot vs live listing tools). The breadth of Canvas features justifies many tools, but the set could be tightened.

Completeness4/5

The server covers the major read-only Canvas surfaces: courses, assignments, announcements, syllabus, modules, pages, files, calendar events, grades, and change tracking. Some gaps exist for directly listing discussions or quizzes without falling back to canvas_api_get or snapshot tools, but core workflows are largely covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues