Canvas LMS integration for students and educators with FERPA-compliant analytics and workflows
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
MCP server for Canvas LMS with up to 101 tools and 8 agent skills. Designed for Claude Desktop, Cursor, Codex, Windsurf, and 40+ other agents; setup and capabilities vary by client.
1. Install the MCP server (everything else, including the skills, needs it running):
canvas-mcp.mcpb from the latest release and double-click it. It prompts for your Canvas URL and token; no terminal needed. Details.pip install into a virtualenv, add your token to .env, and point your client at the canvas-mcp-server binary. Local Installation has the per-client config blocks.2. Verify: canvas-mcp-server --test should report a successful Canvas connection. Then restart your client.
3. Optional: add the workflow skills. These teach your agent the multi-step recipes (weekly plan, morning check, bulk grading, peer review, course QC) on top of the tools:
See Agent Skills for the list. If your agent is Claude Code, the same recipes are also available as slash commands.
Canvas MCP provides up to 101 tools for interacting with Canvas LMS; the default profile registers fewer, and optional feature-gated tools can raise the total to 101. Tools are organized by user type:
| Tool | Purpose | Example Prompt |
|---|---|---|
get_my_upcoming_assignments | Due dates for next N days | "What's due this week?" |
get_my_todo_items | Canvas TODO list | "Show my TODO list" |
get_my_submission_status | Submitted vs missing | "Have I submitted everything?" |
get_my_course_grades | Current grades | "What are my grades?" |
get_my_peer_reviews_todo | Pending peer reviews | "What peer reviews do I need to do?" |
| Tool | Purpose | Example Prompt |
|---|---|---|
list_assignments | All assignments in course | "Show assignments in BADM 350" |
create_assignment | Create new assignment | "Create an assignment due Jan 26 with online text submission" |
update_assignment | Update existing assignment | "Change the due date for Assignment 3 to Feb 15" |
list_submissions | Student submissions | "Who submitted Assignment 3?" |
bulk_grade_submissions | Grade multiple at once | "Grade these 10 students" |
get_assignment_analytics | Performance stats | "Show analytics for Quiz 2" |
send_conversation | Message students | "Message students who haven't submitted" |
create_announcement | Post announcements | "Announce the exam date change" |
| Module Management | ||
create_module | Create course module | "Create a module for Week 5" |
update_module | Update module settings | "Rename the midterm module" |
add_module_item | Add content to module | "Add the syllabus page to Week 1" |
delete_module | Remove a module | "Delete the empty test module" |
| Page & Content | ||
create_page | Create course page | "Create a page for office hours" |
edit_page_content | Update page content | "Update the syllabus page" |
update_page_settings | Publish/unpublish pages | "Publish all Week 3 pages" |
bulk_update_pages | Batch page operations | "Unpublish all draft pages" |
| File Management | ||
upload_course_file | Upload local file to Canvas | "Upload syllabus.pdf to the course" |
| Tool | Purpose |
|---|---|
list_courses | All enrolled courses |
get_course_details | Course info + syllabus |
list_pages | Course pages |
get_page_content | Read page content |
list_modules | List course modules |
list_module_items | Items within a module |
list_discussion_topics | Discussion forums |
list_discussion_entries | Posts in a discussion |
post_discussion_entry | Add a discussion post |
reply_to_discussion_entry | Reply to a post |
| Tool | Purpose | Example Prompt |
|---|---|---|
get_course_structure | Full moduleβitems tree as JSON | "Show me the structure of CS 101" |
scan_course_content_accessibility | WCAG violation scanner (20 checks: headings, tables, links, contrast, alt text, captions, DesignPLUS) | "Audit accessibility for BADM 350" |
fetch_ufixit_report | Institutional accessibility report | "Pull the UFIXIT report for this course" |
parse_ufixit_violations | Extract structured violations | "Parse the UFIXIT violations" |
format_accessibility_summary | Readable violation report | "Summarize the accessibility issues" |
Skills: canvas-course-qc (pre-semester audit), canvas-accessibility-auditor (WCAG-oriented review), canvas-course-builder (scaffold courses from specs/templates).
| Tool | Purpose | When to Use |
|---|---|---|
search_canvas_tools | Discover MCP tools and code API operations | Finding available tools and bulk ops |
execute_typescript | Run TypeScript locally | 30+ items, custom logic, local per-item processing |
Decision tree: Simple query β MCP tools. Batch grading (10+) β bulk_grade_submissions. Complex bulk (30+) β execute_typescript.
Course identifiers: Canvas ID (12345), course code (badm_350_120251_246794), or SIS ID
Cannot do: Create/delete courses, modify course settings, access other users' data
Rate limits: ~700 requests/10 min. Use max_concurrent=5 for bulk operations.
Full documentation: AGENTS.md | tools/TOOL_MANIFEST.json | tools/README.md
The Canvas MCP Server bridges the gap between AI assistants and Canvas Learning Management System, providing role-specific workflows for students, educators, learning designers, and developers. Built on the Model Context Protocol (MCP), it is designed for MCP-compatible clients; setup and supported capabilities vary by client.
Released: August 2026 | Full Changelog | All Releases
A safety release: every delete tool now asks first. Four changes are breaking. Each one's migration is a line long:
delete_announcement removed β call delete_announcement_with_confirmation with the same arguments; it previews first, then deletes on the second call with the token (#318)dry_run removed from the three announcement delete tools β drop the argument; a call without confirmation_token is the dry run and deletes nothing. bulk_delete_announcements used to delete on the first call; it previews now (#318)confirmation_token required on all seven delete tools (delete_announcement_with_confirmation, bulk_delete_announcements, delete_announcements_by_criteria, delete_page, delete_module, delete_module_item, delete_assignment_with_confirmation) β call once with your normal arguments, show the preview, then call again with identical arguments plus the token from the Confirmation token: line. Tokens are single-use, expire in 5 minutes, and stop matching if the target or the arguments changed (#318). Thanks @zqian for the requestrequires-python >= 3.11; upgrade the interpreter, or pin canvas-mcp<1.12 until you can (#315)Also new: delete_assignment_with_confirmation (preview shows due date, points and whether submissions exist); ACCESSIBILITY_CHECKERS so institutions without UDOIT/UFIXIT can set none and drop the three UFIXIT tools while keeping the built-in scanner (#325, thanks @jonespm); the content migration tools (#309); and a Skill Request issue template (#302)
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/canvas-mcp)<a href="https://allmcps.com/mcp/canvas-mcp"><img src="https://allmcps.com/api/badge/canvas-mcp?style=directory" alt="Canvas MCP on AllMCPs" /></a>