Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CANVAS_TOKENYesYour Canvas personal access token
CANVAS_BASE_URLYesThe base URL of your Canvas instance, e.g. https://canvas.yourschool.edu
CANVAS_MAX_PAGESNoMaximum number of pages to fetch when paginating through Canvas API results (default: 10)10

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
course_contentA

Map a course's structure: its modules in order, and the items inside each (files, pages, assignments, quizzes, links). Use this to find what material exists before fetching any of it.

list_filesA

List files in a course — lecture slides, notes, readings — with name, type, and size. Pass search to filter by filename. Use read_file to get the text of one.

get_pageA

Get the content of a Canvas page in a course, such as a syllabus or a weekly overview. page_url is the page's slug, available from course_content.

read_fileA

Download a Canvas file and return its text — lecture slides, notes, readings. Supports PDF, DOCX, PPTX, and plain text. Get file ids from list_files or course_content. Long files are truncated to max_chars.

read_discussionA

Read course discussions. With only course_id, lists the discussion topics. With topic_id, returns that topic and all its replies flattened in order, with a depth field showing nesting.

post_discussion_replyA

Posts a reply to a course discussion publicly under the user's own name, visible immediately to the whole class and the instructor. It cannot be deleted from here. Show the user the exact text and get their confirmation before calling.

search_canvas_apiA

Search all Canvas API endpoints by keyword. Use this to find the right endpoint for anything the curated tools do not cover, then execute it with canvas_request. Returns method, path, summary, and parameter names.

canvas_requestA

Executes any Canvas API endpoint directly. Non-GET methods CREATE, MODIFY, or DELETE real data in Canvas immediately and cannot be undone from here. Find endpoints with search_canvas_api first. Set dry_run=true to preview the prepared request without sending it. What this is permitted to do is decided by Canvas based on your account's role.

whoamiA

Identify the Canvas account this server is authenticated as, including the user's name and their role in each course (student, ta, teacher). Call this first when you need to know what the user can access.

get_calendar_feed_urlA

Fetch the user's private calendar .ics subscription URL — a link they can add to Google/Apple/Outlook calendar to see every Canvas deadline natively. This URL is a bearer credential: whoever holds it can read the user's full calendar with no authentication, and it survives token rotation. Only call this when the user has explicitly asked for their calendar feed / subscription link — do not call it as part of general orientation, and do not repeat the URL back unless asked to.

my_coursesA

List the user's Canvas courses with course code, term, and their role in each. Use this to resolve a course name or code to the course_id that other tools require.

whats_dueA

List what is due for the user across all courses — assignments, quizzes, and scheduled events — sorted soonest first. This is the primary tool for 'what's due this week', 'what do I have coming up', and deadline planning.

my_gradesA

Report the user's current grade and score in each course, or in one course if course_id is given. Use this for 'how am I doing' and standing questions.

list_assignmentsA

List a course's assignments with due dates, points, and whether the user has submitted each one. Use bucket to filter to upcoming, overdue, unsubmitted, or past work.

get_assignmentA

Get one assignment in full: instructions, due and lock dates, points, accepted submission types, rubric, and the user's current submission state.

my_submissionA

Get the user's own submission for an assignment: state, score, grade, lateness, instructor comments, and rubric assessment.

course_announcementsA

List recent course announcements across all active courses, or one course if course_id is given.

submit_assignmentA

Submits work to Canvas for an assignment. This is recorded against the deadline immediately, is visible to the instructor, and cannot be undone from here. Confirm the assignment and content with the user before calling. Check accepted formats with get_assignment first — submission_type must be one the assignment allows. For online_upload, file_ids must reference files already uploaded to Canvas.

Prompts

Interactive templates invoked by user choice

NameDescription
week_aheadPlan the coming days of coursework by deadline and urgency.
study_packGather and summarise course material on a topic.
grade_checkCompute standing in a course and what remains.

Resources

Contextual data attached and managed by the client

NameDescription
meThe authenticated Canvas user's identity and per-course roles.
coursesThe user's active Canvas courses with code, term, and role.
api_catalogEvery endpoint this Canvas instance exposes, with method, path, summary, and parameter names. Generated from the instance's own API spec.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JohannsenLum/canvas-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server