Canvas MCP server
Canvas LMS integration for students and educators with optional privacy controls
256 stars
Reviews
Write oneNobody has reviewed Canvas yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Canvas tools (100, 33 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
_capwrite actionTruncate text to at most max_len characters total, sentinel included.
add_module_itemAdd an item to a module.
analyze_peer_review_qualityAnalyze the quality and content of peer review comments.
assign_peer_reviewManually assign a peer review to a student for a specific assignment.
associate_rubricAssociate an existing rubric with an assignment.
bulk_delete_announcementswrite actionDelete multiple announcements by ID. Two-step: preview first, then confirm with the token.
bulk_grade_submissionsGrade multiple submissions efficiently with concurrent processing.
bulk_update_pageswrite actionUpdate settings for multiple pages at once.
check_enrollmentCheck whether a specific campus login ID is enrolled in a course.
create_announcementwrite actionCreate a new announcement for a course with optional scheduling.
create_assignmentwrite actionCreate a new assignment in a course.
create_content_migrationwrite actionPreview or confirm a full course-copy migration request.
create_discussion_topicwrite actionCreate a new discussion topic for a course.
create_modulewrite actionCreate a new module in a course.
create_pagewrite actionCreate a new page in a Canvas course.
create_rubricwrite actionCreate a new rubric in a course, optionally associating it with an assignment.
create_rubric_from_csvwrite actionCreate one or more rubrics in a course from a CSV string.
create_student_anonymization_mapwrite actionCreate a local CSV file mapping real student data to anonymous IDs for a course.
delete_announcement_with_confirmationwrite actionDelete an announcement. Two-step: preview first, then confirm with the token.
delete_announcements_by_criteriawrite actionDelete announcements matching criteria. Two-step: preview first, then confirm with the token.
delete_assignment_with_confirmationwrite actionDelete an assignment. Two-step: preview first, then confirm with the token.
delete_modulewrite actionDelete a module. Two-step: preview first, then confirm with the token.
delete_module_itemwrite actionRemove an item from a module. Two-step: preview first, then confirm with the token.
delete_pagewrite actionDelete a page. Two-step: preview first, then confirm with the token.
download_course_fileDownload a file from a Canvas course to the local filesystem.
edit_page_contentEdit the content of a specific page.
execute_typescriptwrite actionExecute TypeScript code in a Node.js environment with access to Canvas API.
extract_peer_review_datasetExport all peer review data in various formats for analysis.
fetch_ufixit_reportFetch UFIXIT accessibility report from Canvas course pages.
fix_accessibility_issuesAuto-fix accessibility issues in Canvas course content.
format_accessibility_summaryFormat parsed violations into a human-readable summary.
generate_peer_review_feedback_reportwrite actionCreate instructor-ready reports on peer review quality.
generate_peer_review_reportGenerate peer review completion report with summary, analytics, and follow-up recommendations.
get_anonymization_statusGet current data anonymization status and statistics.
get_assignment_analyticsGet detailed analytics about student performance on a specific assignment.
get_assignment_detailsGet detailed information about a specific assignment.
get_content_migration_statusRead one content migration and its current progress snapshot.
get_conversation_detailsGet detailed conversation information with messages.
get_course_content_overviewGet a comprehensive overview of course content including pages, modules, and syllabus.
get_course_detailsGet detailed information about a specific course.
get_course_structureGet the full module and item structure for a course in a single call.
get_discussion_entry_detailsGet detailed information about a specific discussion entry including all its replies.
get_discussion_topic_detailsGet detailed information about a specific discussion topic.
get_discussion_with_repliesEnhanced function to get discussion entries with optional reply fetching.
get_front_pageGet the front page content for a course.
get_my_course_gradesGet your current grades across all enrolled courses.
get_my_enrollmentsList the courses YOU are enrolled in, with your role in each.
get_my_peer_reviews_todoGet peer reviews YOU need to complete.
get_my_profileGet YOUR own Canvas identity (user ID, name, login ID).
get_my_submissionGet your own submission for an assignment, including attempts used.
get_my_submission_statusGet your submission status for assignments.
get_my_todo_itemsGet your Canvas TODO list.
get_my_upcoming_assignmentsGet your upcoming assignments across all courses.
get_page_contentGet the full content body of a specific page.
get_page_detailsGet a specific page's metadata plus a short text preview.
get_peer_review_assignmentsGet peer review assignment mapping showing who reviews whom with completion status.
get_peer_review_commentsRetrieve actual comment text for peer reviews on an assignment.
get_peer_review_completion_analyticsGet peer review completion analytics with student-level breakdown and summary stats.
get_peer_review_followup_listGet prioritized list of students needing follow-up on peer review completion.
get_rubricGet detailed rubric criteria, ratings, and points.
get_rubric_assessmentGet rubric assessment scores for a specific submission.
get_student_analyticsGet per-student engagement analytics: page views, participations, and on-time/late/missing assignment counts.
get_syllabusGet the complete Canvas Syllabus tab content for a course, untruncated.
get_unread_countGet number of unread conversations.
grade_with_rubricwrite actionSubmit grades using rubric criteria.
identify_problematic_peer_reviewsFlag reviews that may need instructor attention.
list_announcementsList a course's announcements, and nothing else.
list_assignmentsList assignments for a specific course.
list_code_api_modulesList all available TypeScript modules in the code execution API.
list_conversationsList conversations for the current user.
list_course_filesList files in a Canvas course with optional search.
list_coursesList courses for the authenticated user.
list_discussion_entriesList discussion entries (posts) for a specific discussion topic with optional full content and replies.
list_discussion_topicsList discussion topics for a specific course.
list_groupsList all groups and their members for a specific course.
list_module_itemsList items within a specific module, including pages.
list_modulesList all modules in a course.
list_pagesList pages for a specific course.
list_peer_reviewsList all peer review assignments for a specific assignment.
list_rubricsList all rubrics in a specific course with optional detailed criteria.
list_submissionsList submissions for a specific assignment.
list_usersList users enrolled in a specific course.
mark_conversations_readMark multiple conversations as read.
parse_ufixit_violationsParse UFIXIT report content to extract accessibility violations.
post_discussion_entrywrite actionPost a new top-level entry to a discussion topic.
read_course_fileRead a file from a Canvas course and return its content as base64.
reply_to_discussion_entryReply to a student's discussion entry/comment.
scan_course_content_accessibilityScan Canvas course content for basic accessibility issues.
search_canvas_toolsSearch available Canvas tools by keyword — both the registered MCP tools (e.g. list_peer_reviews, create_assignment) and the TypeScript code-execution API used by execute_typescript().
send_bulk_messages_from_listwrite actionSend customized messages to multiple recipients using templates.
send_conversationwrite actionSend messages to students via Canvas conversations.
send_peer_review_followup_campaignwrite actionComplete workflow: analyze peer reviews and send targeted reminders.
send_peer_review_inbox_messageswrite actionSend direct Canvas Inbox messages about incomplete peer reviews.
submit_assignmentwrite actionSubmit one of YOUR OWN assignments. Consumes an attempt.
update_assignmentwrite actionUpdate an existing assignment in a course.
update_discussion_topicwrite actionUpdate an existing discussion topic or announcement.
update_modulewrite actionUpdate an existing module's settings.
update_module_itemwrite actionUpdate an existing module item.
update_page_settingswrite actionUpdate settings for an existing page (without changing content).
upload_course_filewrite actionUpload a file to Canvas course storage.
Public scan report
scanner v0.1.9 · 2026-09-20 · same rubric, same numbers if you re-run it
- Code scan82 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 0 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (1)
- mediumsubprocess with shell=True
exec.shell-truecanvas_mcp-1.12.0/src/canvas_mcp/tools/code_execution.py: … asyncio.create_subprocess_exec without shell=True. This function finds the underlying…
What the publisher says
From the Canvas repository's README, as published. We do not edit it. Read it on GitHub
Canvas MCP Server
<!--mcp-name: io.github.vishalsachdev/canvas-mcp-->
MCP server for Canvas LMS with up to 103 tools and 8 agent skills. Designed for Claude Desktop, Cursor, Codex, Windsurf, and 40+ other agents; setup and capabilities vary by client.
Quick Start
1. Install the MCP server (everything else, including the skills, needs it running):
- Claude Desktop: download canvas-mcp.mcpb from the latest release and double-click it. It prompts for your Canvas URL and token; no terminal needed. Details.
- Cursor, Zed, Windsurf, Continue, Claude Code and other clients: 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:
npx skills add vishalsachdev/canvas-mcpSee Agent Skills for the list. If your agent is Claude Code, the same recipes are also available as slash commands.
For AI Agents
<!-- INLINE AGENT GUIDE: Intentionally duplicates AGENTS.md content. WHY: Agents often can't fetch raw.githubusercontent.com or GitHub blob pages. MAINTENANCE: When updating tools, also update AGENTS.md (source of truth). See CLAUDE.md "Documentation Maintenance" for full guidelines. -->
Canvas MCP provides up to 103 tools for interacting with Canvas LMS; the default profile registers fewer, and optional feature-gated tools can raise the total to 103. Tools are organized by user type:
Student Tools (click to expand)
Educator Tools (click to expand)
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
claude mcp add canvas-mcp -- uvx canvas-mcp
Canvas: common questions
- Is Canvas MCP server safe?
- Yes, by our scan: it is graded A (85/100). Read the Canvas safety report
- How do I install Canvas?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Canvas need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Canvas maintained?
- The last commit was in the last day (2026-09-20). The latest release is v1.12.0.