Skip to main content
Glama
cabrt

Canvas MCP Server

by cabrt

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CANVAS_TOKENYesYour Canvas API access token. Generate at Canvas → Account → Settings → New Access Token.
CANVAS_BASE_URLYesYour Canvas institution's base URL, e.g., https://your-institution.instructure.com

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_my_coursesA

Get current semester courses (auto-detected as active).

Returns: {"courses": [{id, name, code, term}, ...], "count": N}

get_todoA

Get Canvas-computed todo items (assignments needing action).

Returns: {"items": [{type, assignment_name, course_id, due_at, ...}, ...], "count": N}

get_all_upcomingA

Get upcoming assignments across all active courses.

Args: days: How many days ahead to look (default 14)

Returns: {"assignments": [{id, name, due_at, course_name, ...}, ...], "count": N}

get_all_gradesA

Get grades for all active courses.

Returns: {"grades": [{course_id, course_name, current_score, current_grade}, ...], "count": N}

get_courseB

Get full course details including syllabus.

Args: course_id: Canvas course ID

Returns: {id, name, code, term, syllabus, description, start_at, end_at, ...}

get_assignmentsA

Get all assignments for a course.

Args: course_id: Canvas course ID

Returns: {"assignments": [{id, name, due_at, points_possible, ...}, ...], "count": N}

get_assignmentA

Get a single assignment with full description and attachments.

Args: course_id: Canvas course ID assignment_id: Canvas assignment ID

Returns: {id, name, description, due_at, points_possible, submission_types, attachments, ...}

get_announcementsB

Get announcements for a course (list view).

Args: course_id: Canvas course ID

Returns: {"announcements": [{id, title, posted_at, author}, ...], "count": N}

get_announcementA

Get a single announcement with full body.

Args: course_id: Canvas course ID announcement_id: Canvas announcement (discussion topic) ID

Returns: {id, title, message, posted_at, author, attachments}

get_discussionsC

Get all discussion topics for a course.

Args: course_id: Canvas course ID

Returns: {"discussions": [{id, title, posted_at, author, ...}, ...], "count": N}

get_discussionA

Get a single discussion topic with full message body.

Args: course_id: Canvas course ID discussion_id: Canvas discussion topic ID

Returns: {id, title, message, posted_at, author, attachments, ...}

get_quizzesA

Get all quizzes for a course.

Args: course_id: Canvas course ID

Returns: {"quizzes": [{id, title, due_at, points_possible, time_limit, ...}, ...], "count": N}

get_quizA

Get a single quiz with full details.

Args: course_id: Canvas course ID quiz_id: Canvas quiz ID

Returns: {id, title, description, due_at, points_possible, time_limit, question_count, ...}

get_calendar_eventsC

Get calendar events for a course.

Args: course_id: Canvas course ID

Returns: {"events": [{id, title, start_at, end_at, description, ...}, ...], "count": N}

get_rubricsA

Get all rubrics for a course.

Args: course_id: Canvas course ID

Returns: {"rubrics": [{id, title, points_possible, ...}, ...], "count": N}

get_rubricA

Get a single rubric with full criteria.

Args: course_id: Canvas course ID rubric_id: Canvas rubric ID

Returns: {id, title, points_possible, criteria: [{description, points, ratings}, ...]}

get_filesA

List all files in a course.

Args: course_id: Canvas course ID

Returns: {"files": [{id, display_name, size, content_type, url}, ...], "count": N}

get_fileB

Get file metadata and download URL.

Args: file_id: Canvas file ID

Returns: {id, display_name, size, content_type, url, created_at, updated_at}

get_modulesA

Get module structure for a course.

Args: course_id: Canvas course ID

Returns: {"modules": [{id, name, position, items_count, state}, ...], "count": N}

get_module_itemsB

Get items within a module.

Args: course_id: Canvas course ID module_id: Canvas module ID

Returns: {"items": [{id, title, type, content_id, html_url, ...}, ...], "count": N}

get_pageA

Get a wiki page's content with embedded file links.

Args: course_id: Canvas course ID page_url: Page URL slug (e.g., "syllabus" or "week-1-notes")

Returns: {title, body, created_at, updated_at}

get_submissionB

Get your submission for an assignment, including feedback and comments.

Args: course_id: Canvas course ID assignment_id: Canvas assignment ID

Returns: {id, score, grade, submitted_at, workflow_state, comments, attachments, ...}

get_full_course_contextA

Get EVERYTHING for a course in one call: details, syllabus, assignments, announcements, discussions, modules, files, and grades.

Args: course_id: Canvas course ID

Returns: {course, assignments, announcements, discussions, modules, files, grades}

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/cabrt/canvas-mcp'

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