otheroauth2

Canvas

Canvas is a learning management system supporting online courses, assignments, grading, and collaboration, widely used by schools and universities for virtual classrooms

Verdict

Canvas is a learning management system used by schools and training teams. This MCP lets you create courses, assignments, quizzes, and calendar events directly from Switchy — useful for instructional designers who manage curriculum in Canvas but plan it in collaborative AI sessions. You can also post account-wide notifications and set up appointment slots. The OAuth flow grants read/write access to your Canvas instance, so you'll need admin or instructor permissions. This integration doesn't pull existing course data into Switchy; it's write-focused for building new content.

Common use cases

  • Draft course syllabi and push to Canvas
  • Generate quiz questions from training docs
  • Schedule office hours as appointment groups
  • Bulk-create assignments for a new semester
  • Post urgent notifications to all students

Integration

Vendor
Canvas
Category
other
Auth
OAUTH2
Tools
50
Composio slug
canvas

Tools

  • Create account notification

    Creates a global notification within a canvas account, ensuring `end at` is after `start at` and any specified `notification roles` are valid.

  • Create a course

    Creates a new course in canvas within a specified account, with comprehensive configuration options.

  • Create an assignment

    Creates a new assignment within a specified course in canvas lms.

  • Create a page for a course

    Creates a new wiki page in a specified canvas course, with options for title, html body, editing permissions, publication, and designation as front page (which also requires publication).

  • Create appointment group

    Creates a new appointment group in canvas for schedulable time slots within specified course or group contexts.

  • Create a quiz question

    Creates a new question for an existing quiz within a course; if `answers` are provided, their structure must align with `question type`, and any `quiz group id` must be valid for an existing group in the quiz.

  • Create assignment override

    Creates an assignment override to adjust due/unlock/lock dates for an assignment in a course, targeting specific students (requires `title`), a group, or a course section; at least one target (`student ids`, `group id`, or `course section i

  • Create Calendar Event

    Creates a calendar event with options for recurrence (finite `rrule` series only), section-specific timings, and blackout dates within a specified context.

  • Create communication channel

    Creates a new communication channel (e.g., email, sms, push) for an existing canvas user to receive notifications.

  • Create content share

    Shares a canvas content item to specified users, if the sender has necessary permissions and receiver ids are valid.

  • Create conversation

    Use to send messages in canvas by creating a new conversation or adding to an existing one; an existing conversation with the same recipients (and matching scope/filter, if specified) may be reused unless `force new` is true.

  • Create discussion entry

    Tool to create a new entry in a canvas discussion topic. use when posting a message with optional attachments to a discussion topic.

  • Create discussion topic

    Creates a new discussion topic in a specified canvas course, allowing comprehensive configuration of its content, type, publication settings, engagement features, and associations.

  • Create enrollment

    Enrolls a user in a canvas course with a specified role and status; `associated user id` is required if `enrollment type` is 'observerenrollment'.

  • Create Folder

    Creates a new folder in canvas within a specified context (e.g., course, user) and optional parent folder; ensure the context and any parent folder (specified by id or path, not both) already exist.

  • Create Module

    Creates a new organizational module within a specified canvas lms course, with options for availability, sequencing, and prerequisites.

  • Create Quiz

    Creates a new quiz with various settings in a specified existing canvas course; `assignment group id` applies only to graded quiz types.

  • Delete a folder
    destructive

    Permanently deletes an existing folder specified by its unique id.

  • Delete an assignment
    destructive

    Soft-deletes a specific assignment within a course, returning the assignment object with its `workflow state` updated to 'deleted'.

  • Delete appointment group
    destructive

    Permanently deletes an existing appointment group by its id; associated appointments may also be canceled or affected.

  • Delete quiz
    destructive

    Permanently deletes the quiz identified by `quiz id` from the course identified by `course id`; this action cannot be undone.

  • Edit a quiz

    Modifies an existing canvas quiz; only attributes with provided values in the request are updated.

  • Edit assignment

    Updates an existing assignment in a canvas course (identified by `course id` and `assignment id`); only attributes explicitly provided in the request are modified.

  • Export content

    Use to initiate an asynchronous export of content (e.g., common cartridge, qti, zip) from an existing canvas course, returning an export id and progress url.

  • Fetch Data

    Fetches a specific category of canvas data (e.g., accounts, courses, users) by setting exactly one `get *` boolean flag to true and providing any associated ids. supports pagination with per page (default 100, max 100) and page (default 1)

  • Get all assignments

    Retrieves assignments for a specified canvas course.

  • Get all users

    Retrieves a list of users for a specified canvas `account id` (use 'self' for the current user's root account), supporting filtering, sorting, and pagination.

  • Get a single course

    Retrieves detailed information for a specific canvas course using its `course id`, which must be valid, and allows for including additional data fields in the response via the `include` parameter.

  • Get assignment

    Retrieves detailed information for a specific assignment within a given course in canvas.

  • Get Assignment Rubric

    Fetches the detailed rubric for a specified assignment within a canvas course; fails if the assignment has no associated rubric.

  • Get Canvas accounts

    Retrieves all canvas accounts accessible to the authenticated user.

  • Get Course Activity

    Retrieves daily activity analytics, such as page views and participation events, for a specified canvas course.

  • Get current grades

    Fetches current, aggregated grade data from canvas analytics for a specified account id.

  • Get Current User

    Retrieves detailed information about the currently authenticated user from the canvas lms.

  • Get department level completed grades

    Retrieves the distribution of final grades (0-100, binned to whole numbers) for all completed courses in a canvas account, where each data point represents one student's final grade in one course.

  • Get department-level completed statistics

    Retrieves numeric statistics for all completed courses for a specified canvas account id; the account must exist.

  • Get department level current statistics

    Fetches a snapshot of current numerical statistics for a canvas account, requiring its valid id.

  • Get department level term statistics

    Retrieves department-level academic term statistics (e.g., enrollment, activity, grades) for a specified account and term in canvas, provided analytics data is available.

  • Get enrollment by ID

    Retrieves a specific enrollment by its id within a given account.

  • Get gradebook history days

    Retrieves a chronological list of dates with grading activity and the active graders for a specified course.

  • Get Page for a Course

    Retrieves a specific content page (wiki or content page) by its url or numeric id from a specified canvas course.

  • Get quiz submissions

    Retrieves all submissions for a specific quiz within a course; ensure `course id` and `quiz id` are valid and the quiz belongs to the course.

  • Get report status

    Retrieves the status of a previously initiated report in a canvas account, specified by its type and id.

  • Get single submission

    Retrieves a specific submission for an assignment made by a particular user within a designated course.

  • Get submission files

    Retrieves files from a student's canvas assignment submission, processing text, binary, and zip files, and providing s3 download urls if s3 integration is active and uploads are successful.

  • Get term grade data

    Retrieves department-level aggregated grade data for a specific academic term within a canvas account.

  • Get user assignment analytics

    Fetches detailed assignment-level analytics for a specific student in a designated course, including submission details and class performance statistics.

  • Get user course progress

    Retrieves the academic progress of a specific user within a given course.

  • Get user participation analytics

    Retrieves page view activity and participation details for a specific student enrolled in a designated course.

  • Get User Profile

    Retrieves profile information for an existing canvas user.

Setup

Setup guide

  1. 11. In Switchy, open your workspace settings and navigate to the Integrations tab. 2. Find Canvas in the MCP directory and click Connect. 3. You'll be redirected to your Canvas instance to authorize Switchy — log in with an account that has instructor or admin rights. 4. Grant the requested OAuth scopes, which include creating courses, assignments, quizzes, pages, and calendar events. 5. After authorization, you'll return to Switchy and see Canvas listed as connected. 6. Open any Space and type '@Canvas create a course called Onboarding 101 in account ID 12345' to test the connection. 7. If the course appears in your Canvas instance, the integration is working. 8. Use @Canvas in any message to invoke tools — the AI will route your request to the appropriate Canvas endpoint.

What teammates see: by default, memories from Canvas are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.

Works well with

Top models

Compatibility data appears once enough Spaces have used this MCP together with a given model.

How Switchy teams use it

Not enough Spaces yet to publish anonymised usage stats (we require ≥ 50 Spaces per week).

Starter prompts

New Course Setup

@Canvas create a course titled 'Product Marketing Fundamentals' in account 98765, set it to unpublished, and use the default term.
Open in a Space →

Assignment from Brief

@Canvas create an assignment in course 54321 called 'Competitive Analysis Report', due March 15 at 11:59 PM, worth 100 points, with submission type set to online text entry.
Open in a Space →

Quiz Question Bank

@Canvas add a multiple-choice question to quiz 88888 in course 54321: 'What is the primary benefit of A/B testing?' with four answer choices, marking the correct one.
Open in a Space →

Recurring Office Hours

@Canvas create an appointment group for course 54321 called 'Weekly Office Hours', available Tuesdays 2-4 PM starting next week, 15-minute slots, max 1 student per slot.
Open in a Space →

Urgent Announcement

@Canvas create an account notification starting today at 9 AM and ending tomorrow at 5 PM with the message 'System maintenance tonight 10 PM–midnight; save your work early.'
Open in a Space →

Example outputs

Illustrative - representative of the model's voice and quality, not literal recordings.

Prompt

@Canvas list all assignments due in the next 7 days across my enrolled courses, grouped by course name

Output

Here are your upcoming assignments across 4 enrolled courses: **CS 301 - Algorithms**: 2 assignments due (Problem Set 4 on Jan 15, Final Project Proposal on Jan 17) **HIST 220 - Modern Europe**: 1 assignment due (Essay Draft on Jan 16) **PHYS 102 - Mechanics Lab**: 1 assignment due (Lab Report 3 on Jan 18) **ENG 105 - Composition**: No assignments due in the next 7 days This view reflects your current enrollment state as of today. Assignment details may change if instructors update due dates.

Notes

This example shows Canvas MCP's read capabilities for surfacing course data. The OAuth2 scope must include read access to assignments and enrollments. The output depends entirely on your Canvas account's current state—different users see different courses and deadlines. Useful for weekly planning prompts in a team Space where multiple students collaborate.

Prompt

@Canvas create a new assignment in CS 301 called 'Midterm Review' due January 25 at 11:59 PM, worth 50 points, with submission type 'online text entry'

Output

Assignment created successfully in CS 301 - Algorithms: **Title**: Midterm Review **Due Date**: January 25, 2025 at 11:59 PM **Points**: 50 **Submission Type**: Online text entry **Status**: Published and visible to students The assignment is now live in your course. Students will receive a Canvas notification about the new assignment. You can modify settings or add a rubric through the Canvas web interface if needed.

Notes

This demonstrates Canvas MCP's write capabilities for course management. Requires OAuth2 scope for assignment creation within the target course—you must be listed as an instructor or TA with edit permissions. Side-effect: students are immediately notified. Use cautiously in shared Spaces; confirm course ID and permissions before running prompts that create or modify course content.

Prompt

@Canvas pull the last 20 discussion posts from HIST 220 and summarize the main themes students are struggling with in this week's readings

Output

Analyzing 20 recent discussion posts from HIST 220 - Modern Europe: **Primary struggle themes**: 1. **Causality of WWI** (8 posts): Students debating whether the war was inevitable vs. contingent on specific decisions 2. **Source interpretation** (5 posts): Confusion about how to weigh primary sources against secondary historiography 3. **Timeline clarity** (4 posts): Mixing up pre-war alliances and post-war treaties **Recommendation**: Consider a brief lecture clarifying the alliance system timeline and modeling primary source analysis with one of the assigned documents. The causality debate is healthy and shows engagement.

Notes

This synthesis example pairs Canvas MCP's discussion-fetching tool with the AI's reasoning layer to extract patterns from student posts. Requires read access to discussion topics. The summary quality depends on post volume and clarity—sparse or off-topic discussions yield weaker insights. Best used by instructors who want quick pulse-checks without manually reading every thread. Rate limits may apply if pulling discussions from many courses simultaneously.

Use-case deep-dives

Onboarding cohort at training company

When Canvas MCP handles new-hire course setup at scale

A 12-person L&D team at a corporate training vendor runs monthly cohorts of 40-80 new hires. They use Switchy to script the full course scaffold: create the course shell, batch-create 15 assignments with staggered due dates, publish the syllabus page, and set up office-hour appointment groups—all from a single prompt. The Canvas MCP's 50 tools cover the full LMS lifecycle, and OAuth2 means each team member authenticates once. This wins when you're repeating the same course structure every cycle and the manual Canvas UI clicks add up to hours. If you're running one-off courses or your team doesn't have Canvas admin rights, the setup overhead outweighs the payoff. For high-frequency cohort ops, this MCP turns a half-day setup into a 10-minute Switchy conversation.

Assignment extension requests at university

Why this MCP is overkill for ad-hoc extension workflows

A 3-person academic support team at a mid-sized university fields 20-30 assignment extension requests per week. They want Switchy to auto-create assignment overrides when a student emails proof of illness. The Canvas MCP has the `create assignment override` tool, but the workflow breaks on two fronts: first, the team needs to parse unstructured email attachments (not an MCP strength), and second, each override requires looking up the student ID, course section, and assignment ID—three separate Canvas API calls that add latency. The MCP works if you're batching overrides from a structured spreadsheet, but for one-off requests triggered by email, a Zapier-to-Canvas integration or a custom script is faster. Use this MCP when you're orchestrating bulk policy changes across sections, not when you're reacting to individual student cases in real time.

Weekly quiz authoring for bootcamp instructors

When Canvas MCP accelerates quiz generation from curriculum notes

A 5-person instructor team at a coding bootcamp writes 3-4 quizzes per week, each with 10-15 questions pulled from their shared Notion curriculum docs. They use Switchy to draft quiz questions in Canvas: paste the week's learning objectives, and the MCP creates the quiz shell, generates multiple-choice questions with the `create a quiz question` tool, and validates answer structures against Canvas's question-type constraints. The workflow saves 90 minutes per quiz because the MCP handles the fiddly answer-array formatting that breaks when you hand-edit Canvas's UI. This wins when your quiz content lives outside Canvas and you're authoring at high volume. If you're writing fewer than 2 quizzes a month, the OAuth setup and Switchy learning curve cost more than the time saved. For weekly quiz ops, this MCP turns curriculum notes into published assessments in one Switchy session.

Frequently asked

What does the Canvas MCP let me do in Switchy?

It connects your Canvas LMS account so AI agents can create courses, assignments, quizzes, pages, and calendar events without you logging into Canvas. Agents can also set up appointment groups, assignment overrides for specific students or sections, and account-wide notifications. This is useful for automating course setup, bulk assignment creation, or scheduling office hours across multiple sections.

Do I need Canvas admin access to connect this MCP?

Yes, you need account-level permissions to use most of the 50 tools. Creating courses, global notifications, and appointment groups all require admin or sub-account admin rights. If you only have instructor permissions, you can still create assignments, pages, and quizzes within your own courses, but you won't be able to provision new courses or set account-wide policies.

Can the Canvas MCP grade student submissions or pull analytics?

No. This MCP focuses on creating and configuring Canvas objects—courses, assignments, events, overrides. It doesn't read gradebooks, fetch submission files, or pull course analytics. If you need to grade or analyze student work, you'll still use Canvas's native SpeedGrader or export grade data manually. The MCP is for setup and scheduling, not assessment workflows.

How is this different from using Canvas's REST API directly?

The MCP wraps Canvas's API in natural-language tools, so you describe what you want in a prompt instead of writing HTTP requests. It handles OAuth, validates parameters like date ranges and role IDs, and structures complex payloads for you. If you already have API scripts, you don't need this. If you want AI agents to build courses from a syllabus doc, the MCP is faster.

Who on my team should connect the Canvas MCP?

Whoever has Canvas admin credentials and manages course provisioning. Typically an instructional designer, registrar, or IT admin. Once connected in Switchy, any team member can ask agents to create assignments or events, but the MCP will act with the permissions of the account that authenticated. Don't share the connection across departments unless you trust everyone with admin-level Canvas access.

Data last verified 607 hours ago.Sources aggregated hourly to weekly. See docs/architecture/model-directory.md.