Canvas MCP server

Connect Canvas to Claude, ChatGPT, Cursor, Claude Code, Codex, Gemini, GitHub Copilot and any other MCP client, for your whole team. Metorial adds security, governance, and tracing, and gives everyone one Magic MCP URL to connect.

What you can do with the Canvas MCP server

Ask your agent in plain language. Each of these maps to a real tool on the server.

  • Use the list enrollments tool in Canvas
  • Use the manage course tool in Canvas
  • Use the download file tool in Canvas
  • Use the list module items tool in Canvas
  • Use the list course users tool in Canvas
  • Use the list discussions tool in Canvas

Supported Tools

list_enrollments

List Enrollments

List all enrollments in a course. Includes enrollment type, state, user info, and optionally grades. Can filter by role type and enrollment state.

manage_course

Manage Course

Create, update, or delete a course. For creating, provide an accountId and course details. For updating, provide a courseId and the fields to change. For deleting/concluding, specify the action.

download_file

Download File

Prepare an authenticated Canvas file download. Returns complete original file metadata, including the provider download URL.

list_module_items

List Module Items

List every item in a course module, including linked content IDs, page slugs, URLs, positions, and completion requirements.

list_course_users

List Course Users

List users enrolled in a course. Filter by enrollment type and search by name or ID. Returns user details including name, email, and enrollment information.

list_discussions

List Discussions

List discussion topics or announcements in a course, including topic IDs, bodies, publication state, and grading metadata.

grade_submission

Grade Submission

Grade a student's submission or add a comment. Set a grade, excuse the assignment, and/or leave feedback. Use posted_grade format like "95%", "A-", "pass", or a raw point value.

get_assignment

Get Assignment

Read complete assignment details, optionally including the current user submission and assignment date overrides.

list_assignment_groups

List Assignment Groups

List assignment groups with their IDs, names, grading weights, positions, and rules. Use a group ID when creating or moving an assignment.

manage_assignment

Manage Assignment

Create, update, or delete an assignment in a course. Configure submission types, due dates, points, grading type, and more. Supports online upload, text entry, URL, media recording, and external tool submission types.

get_conversation

Get Conversation

Read a conversation including message bodies and participants, while leaving its read state unchanged.

list_courses

List Courses

Retrieve courses accessible to the authenticated user. Can filter by enrollment type, enrollment state, and search term. Returns course details including name, code, term, and workflow state.

get_course

Get Course

Retrieve detailed information about a single course by its ID. Includes course settings, syllabus body, term info, and total students when requested.

get_discussion

Get Discussion

Read the complete metadata and body of a discussion topic or announcement. Topic IDs are available from list_discussions.

list_submissions

List Submissions

List all submissions for an assignment in a course. Returns submission details including grade, score, workflow state, and submission timestamp. Optionally include user details and comments.

get_quiz

Get Quiz

Get complete classic Canvas quiz details, including settings, dates, question count, and attempt limits. Does not retrieve New Quizzes.

manage_module

Manage Module

Create, update, or delete a course module. Modules organize course content into sequential learning paths. Can also add items (assignments, pages, files, URLs, etc.) to existing modules.

manage_enrollment

Manage Enrollment

Enroll a user in a course or remove an enrollment. Supports various roles (student, teacher, TA, observer, designer) and enrollment states. Can also conclude, deactivate, or delete existing enrollments.

list_course_creation_accounts

List Course Creation Accounts

List accounts in which the authenticated user can create courses. Use the returned account ID with manage_course. Canvas can return an empty list when course creation is unavailable.

list_modules

List Modules

List all modules in a course. Modules organize content into sequential learning paths. Optionally include module items (assignments, pages, files, etc.) within each module.

list_assignments

List Assignments

List assignments in a course. Filter by search term, bucket (past, overdue, upcoming, etc.), and sort order. Returns assignment details including due dates, points, submission types, and workflow state.

get_page

Get Page

Read a course wiki page, including its HTML body, publication state, URL, and editing metadata.

list_pages

List Pages

List course wiki pages and their URL slugs. Use a slug with get_page to read its content or manage_page to update it.

who_am_i

Who Am I

Get the authenticated Canvas user profile, including the real user ID, name, and available contact information.

list_files

List Files

List files in a course. Search by name, filter by content type, and sort by various fields. Returns file metadata including name, size, content type, and download URL.

manage_discussion

Manage Discussion

Create, update, or delete a discussion topic in a course. Supports threaded discussions, graded discussions, and announcements. Configure pinning, locking, and publish state.

get_course_analytics

Get Course Analytics

Retrieve course-level analytics data. Choose between activity data (page views and participation over time), assignment statistics (min/max/median scores), or student summaries (per-student page views and participation).

list_quizzes

List Quizzes

List quizzes in a course. Returns quiz details including title, type, time limit, question count, and point totals. Supports classic Canvas quizzes.

list_calendar_events

List Calendar Events

List calendar events across courses, groups, and users. Filter by date range, context codes, and event type. Returns events and optionally assignments with due dates.

manage_page

Manage Page

Create, update, or delete a wiki page in a course. Pages support HTML content and can be set as the course front page. Pages are identified by their URL slug (not a numeric ID).

manage_calendar_event

Manage Calendar Event

Create, update, or delete a calendar event. Events can be associated with courses, groups, or individual users via context codes (e.g., "course_123", "user_456").

list_conversations

List Conversations

List conversations (messages) for the authenticated user. Filter by scope (inbox, unread, archived, starred, sent). Returns conversation metadata and the most recent message.

send_message

Send Message

Send a Canvas message (conversation) to one or more recipients. Messages can be scoped to a course context. Supports group conversations and bulk messaging.

Connect Canvas to your AI client

Every client uses the same Magic MCP URL, and so does any other MCP client. Add it once and sign in with SSO.

  1. Enable Canvas in Metorial. In your Metorial portal, enable the Canvas MCP server and sign in with the account that owns the data. Access stays governed by your team policies.
  2. Add a custom connector. Open Customize, then Connectors. Select Add, then Custom, then Web.
  3. Paste your Metorial MCP URL. Name it Metorial, paste your Magic MCP URL (<your-magic-mcp-url>) and continue.
  4. Sign in. Select Add and sign in to load Canvas tools.

Run Canvas through the Metorial gateway

One governed layer for every app your agents reach, not a separate connector per tool.

  • Give Canvas and every other app to your whole team through one MCP gateway, behind your SSO.
  • Scope which teams and agents can use Canvas tools with role-based access control, and trace every call.
  • Prefer to run it yourself? Metorial is open source and self-hostable.

More integrations teams use with Canvas

Notion

Create, read, update, and archive pages and databases in a Notion workspace. Manage blocks (paragraphs, lists, headings, embeds, etc.) within pages. Query databases with filters and sorts across rich property types including text, numbers, dates, selects, relations, and formulas. Search across pages and databases by title. Add and read comments on pages and blocks. Upload files to pages. Manage workspace users and retrieve user profiles.

GitHub

Manage repositories, issues, and pull requests. Create and configure branches, star repositories, review code, and merge changes. Automate CI/CD workflows with GitHub Actions, manage workflow runs, secrets, and artifacts. Track issues with labels, milestones, and assignees. Search across code, repositories, issues, and users. Manage organizations, teams, and memberships. Create and manage projects, gists, packages, deployments, and environments. Access security alerts including code scanning, secret scanning, and Dependabot alerts. Read and write file contents in repositories. Manage webhooks, notifications, and codespaces.

Salesforce

Manage CRM data including Accounts, Contacts, Leads, Opportunities, Cases, and custom objects. Create, read, update, and delete records. Query data using SOQL and search across objects using SOSL. Perform bulk data operations for large-scale imports, exports, and migrations. Execute composite requests to batch multiple operations in a single API call. Access analytics, reports, and dashboards. Manage files and attachments associated with records. Interact with Chatter feeds, posts, and groups for social collaboration. Manage org metadata including custom objects, fields, layouts, and workflows. Query data using GraphQL for precise data retrieval across related objects.

Sharepoint

Manage SharePoint sites, document libraries, lists, and files. Create, read, update, and delete lists and list items with custom columns. Resolve site users to numeric Person/Group LookupId values. Upload, download, move, copy, and version files in document libraries. Search across sites, files, folders, lists, and list items using Microsoft Search. Manage permissions at site, list, and item levels with granular access control. Define and manage content types and site columns. Retrieve site properties and search for sites across Microsoft 365.

Airtable

Create, read, update, and delete records in Airtable bases and tables. Manage base schemas including creating tables and fields. Filter records using formulas, sort by fields, and scope queries to specific views. Upsert records to find, create, or update in a single call. Upload attachments to records, read and write record comments, list accessible bases, and receive real-time base change events through webhooks.

Confluence

Create, read, update, and delete pages, blog posts, comments, and attachments in Confluence spaces. Manage spaces, permissions, labels, and content restrictions. Search content using Confluence Query Language (CQL). Upload and download file attachments with versioning. Manage users, groups, and group memberships. Create and manage whiteboards, databases, folders, and templates. View and update inline tasks. Access audit logs.

Technical notes for Canvas

Manage courses, assignments, enrollments, and grading in Canvas LMS. Create and organize course content including modules, pages, files, quizzes, and discussions. Enroll users with specific roles, submit and grade assignments, manage rubrics, and track learning outcomes. Send messages between users, schedule calendar events, and configure appointment groups. Upload and organize files, manage groups, and handle SIS data imports. Access course and account-level analytics including participation data and student performance. Configure external tool integrations (LTI), perform content migrations, and administer account settings, roles, and permissions.

Frequently asked questions

Common questions about connecting Canvas to AI agents with Metorial.

  1. How many tools does the Canvas MCP server have?
    The Canvas MCP server exposes 33 tools, including List Enrollments, Manage Course, Download File. Each one is governed and traced through Metorial.
  2. Canvas exposes tools your agents call on demand; it does not publish event triggers yet. Everything still runs through one governed MCP URL.
  3. Any MCP client, including VS Code, Windsurf, Zed, OpenCode and Grok. Each one reaches the Canvas MCP server through the same Metorial URL.
  4. Use role-based access control to decide which teams, users, and agents can use Canvas and which of its tools they can call.
  5. Yes. Metorial is open source, so you can run the Canvas MCP server yourself or use the hosted gateway.

Connect Canvas to production AI agents

See how Metorial gives your team governed access to Canvas, with tracing and security controls built in.