io.github.Fireiscoolsolo/canvas-lms-mcp-local
NPM · CANVAS-LMS-MCP-LOCAL
Student-focused Canvas LMS: 237 tools for grades, deadlines, planning, submissions and study plans.
Available components
Last scanned (9 hours ago)
Scores higher than 43% of npm servers
Category Education and Research
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security63
- No malware found by supply-chain analysis.Pass
- Known CVEs could not be checked: the version this server declares is not published in its registry.Unverified
- No install/post-install scripts declared.Pass
- Dependency health could not be checked: the version this server declares is not published in its registry.Unverified
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability88
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 24831 tokens (~104/item across 237 items; 237 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
- Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (1% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 10 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 238 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Checks we ran (14)
- Malware scan
- Install scripts
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Checks we could not complete (2)
These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.
- Known CVEs in Supply Chain SecurityKnown CVEs could not be checked: the version this server declares is not published in its registry.
- Dependency health in Supply Chain SecurityDependency health could not be checked: the version this server declares is not published in its registry.
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 −10
- Known CVEs: pass → unverified ▼ security
- Dependency health: 0.84 → unverified ▼ functional
- Package version: 1.2.0 → 1.2.1 functional
- 3 Nov 26 +1
- Schema quality: pass → fail ▼ functional
- First check of Tool coverage: 1 functional
- Package version: 1.1.3 → 1.2.0 functional
- 2 Nov 26 +1
- Security disclosure: unverified → pass ▲ functional
- 1 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- Security disclosure: pass → unverified ▼ functional
- 31 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 1.1.2 → 1.1.3 functional
- 30 Oct 26 +1
- Package version: 1.1.0 → 1.1.2 functional
- 28 Oct 26 +17
- Stability: 0.40 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: unverified → 100 ▲ functional
- Package version: 1.0.3 → 1.1.0 functional
- 27 Oct 26 −12
- Malware scan: pass → unverified ▼ security
- Schema quality: 51 → 90 ▼ functional
- Tool coverage: 78% → 100% ▲ functional
- Schema quality: good → excellent functional
- Package version: 1.0.1 → 1.0.3 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/canvas-lms-mcp-local@1.2.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
list_group_pages List Group Pages ~97
List wiki pages in a group workspace with titles and URL slugs. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| group_id | string | yes | Student group ID (numeric string). Get it from list_my_groups. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_media_objects List Media Objects ~120
List recorded lectures and other video or audio in a course with titles and media IDs. Read-only. Get captions with get_media_captions or download_media_captions.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_missing_submissions List Missing Submissions ~80
List every assignment Canvas has flagged as missing across all your courses, with due date, points and how overdue it is. Read-only. One call instead of looping over courses. list_overdue_assignments checks submission status course by course instead.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
No output schema declared.
No examples provided.
list_module_items List Module Items ~144
List the items in a module (assignments, pages, files, quizzes, links) with each one's completion requirement and whether you met it. Read-only. Use list_modules to find module IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| module_id | string | yes | Module ID (numeric string). Get it from list_modules. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_modules List Modules ~118
List the modules in a course in order, with your completion state, prerequisites and unlock dates. Read-only. Use list_module_items to see what is inside a module.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_my_enrollments List My Enrollments ~138
List your enrollments across all courses, with role (student, observer…), section and current grade summary. Read-only. Use list_courses for course details; use this when you need roles, sections or per-enrollment grades.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
| state | array | – | active, invited, completed, inactive |
| type | array | – | Optional enrollment type filter, e.g. "StudentEnrollment". |
No output schema declared.
No examples provided.
list_my_files List My Files ~114
List files in your personal Canvas storage (not course files), with names, sizes and IDs. Read-only. For course files use list_course_files.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
| search_term | string | – | Optional text filter on names or titles (at least 2 characters, case-insensitive). |
No output schema declared.
No examples provided.
list_my_groups List My Groups ~88
List the student groups you belong to across all courses, with group IDs and course. Read-only. Use the IDs with the other group tools.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_my_observees List My Observees ~90
List the students you are linked to as an observer, for parent or mentor accounts. Read-only. Returns an empty list for regular student accounts.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_my_peer_reviews List My Peer Reviews ~72
List peer reviews assigned to you that you still need to complete, in one course or all active courses. Read-only. Checks both the assignment endpoint and the Planner feed, since either alone can miss items. Submit with submit_peer_review.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | – | Omit to check all active courses |
No output schema declared.
No examples provided.
list_my_quiz_submissions List My Quiz Submissions ~95
List all your attempts on a quiz with the score for each. Read-only. Use get_my_quiz_submission for just the latest.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| quiz_id | string | yes | Quiz ID (numeric string). Get it from list_quizzes, or list_new_quizzes for New Quizzes. |
No output schema declared.
No examples provided.
list_my_reservations List My Reservations ~90
List the appointment slots you have booked, from the past week through the next 60 days. Read-only. Cancel one with cancel_reservation.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_my_submissions List My Submissions ~114
List all of your submissions in a course with scores, grades and status. Read-only. Use get_my_submission for full detail on one.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_new_quizzes List New Quizzes ~131
List New Quizzes assessments in a course with due dates, points and question counts. Read-only. New Quizzes is a separate service from Classic Quizzes (list_quizzes) and may not be enabled at your school.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_notification_categories List Notification Categories ~71
The notification categories on one delivery channel (email, phone) and how often Canvas currently notifies you about each, e.g. due dates, grading, announcements. Use with update_notification_preference.
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Communication channel ID (numeric string). Get it from get_communication_channels. |
No output schema declared.
No examples provided.
list_outcome_groups List Outcome Groups ~113
List how a course's learning outcomes are organized into groups and subgroups. Read-only. Use list_outcomes for the outcomes themselves.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_outcomes List Outcomes ~115
List the learning outcomes linked to a course with titles, descriptions and mastery points. Read-only. Use get_my_outcome_results for your own mastery.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_overdue_assignments List Overdue Assignments ~77
List assignments past their due date that you have not submitted, checking each active course. Read-only. Slower than list_missing_submissions, which relies on Canvas's own missing flag, but catches items without that flag.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
No output schema declared.
No examples provided.
list_page_revisions List Page Revisions ~167
List the edit history of one course page: revision numbers, editors and dates. Read-only. Students often cannot see page history, in which case Canvas returns a permission error. Read a revision with get_page_revision.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
| page_url | string | yes | The page's URL slug, e.g. "week-1-overview" (the last part of the page address). Get it from list_pages. |
No output schema declared.
No examples provided.
list_pages List Pages ~143
List the wiki pages in a course with titles, URL slugs and last-updated dates. Read-only. Read one page with get_page_content using its url slug.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
| search_term | string | – | Optional text filter on names or titles (at least 2 characters, case-insensitive). |
No output schema declared.
No examples provided.
list_planner_items List Planner Items ~154
Your Canvas To Do list (the Planner) for a date range, across every course: assignments, quizzes, discussions, pages and your own notes, with plannable IDs for mark_planner_item_done.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | – | Only this course (numeric ID from list_courses). |
| end_date | string | – | End of the range, YYYY-MM-DD. Default 14 days from now. |
| incomplete_only | boolean | – | If true, leave out items you have already submitted or marked done. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| start_date | string | – | Start of the range, YYYY-MM-DD. Default today. |
No output schema declared.
No examples provided.
list_planner_notes List Planner Notes ~127
Your own Canvas to-do notes (planner notes). Only you see these.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | – | Only notes linked to this course. |
| end_date | string | – | Only notes on or before this date, YYYY-MM-DD. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
| start_date | string | – | Only notes on or after this date, YYYY-MM-DD. |
No output schema declared.
No examples provided.
list_quiz_questions List Quiz Questions ~178
List a quiz's questions so you can review a completed, graded attempt. Read-only and never used to take a quiz. Canvas hides questions unless the instructor allows review, so this often returns a permission error or nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
| quiz_id | string | yes | Quiz ID (numeric string). Get it from list_quizzes, or list_new_quizzes for New Quizzes. |
| quiz_submission_id | string | – | Quiz submission ID from get_my_quiz_submission. |
No output schema declared.
No examples provided.
list_quizzes List Quizzes ~149
List Classic Quizzes in a course with due dates, time limits, allowed attempts and points. Read-only. For New Quizzes, use list_new_quizzes. This server never takes quizzes.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
| search_term | string | – | Optional text filter on names or titles (at least 2 characters, case-insensitive). |
No output schema declared.
No examples provided.
list_rubrics List Rubrics ~114
List the rubrics in a course with titles, point totals and IDs. Read-only. Read one in full with get_rubric.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_sections List Sections ~119
List the sections in a course (e.g. lecture or lab sections), including the one you are enrolled in. Read-only. Useful for understanding section-specific due-date overrides.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_submission_attachments List Submission Attachments ~97
List files attached to your submission for one assignment, with names, sizes and download URLs. Read-only. Pass a URL from here to download_submission_attachment to save a file.
| Name | Type | Req | Description |
|---|---|---|---|
| assignment_id | string | yes | Assignment ID (numeric string). Get it from list_assignments or list_upcoming_assignments. |
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
No output schema declared.
No examples provided.
list_submission_comments List Submission Comments ~94
List comments on your submission from your instructor and others, with author and time. Read-only. Comment text is fenced as untrusted. Reply with post_submission_comment.
| Name | Type | Req | Description |
|---|---|---|---|
| assignment_id | string | yes | Assignment ID (numeric string). Get it from list_assignments or list_upcoming_assignments. |
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
No output schema declared.
No examples provided.
list_todo List Todo ~111
List Canvas's own to-do items for you: assignments waiting for your submission, and items to grade if you are an instructor. Read-only. For a date-bounded view use list_upcoming_assignments; for one course use list_todo_for_course.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_todo_for_course List Todo For Course ~110
List Canvas to-do items for a single course. Read-only. Use list_todo for all courses at once.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
No output schema declared.
No examples provided.
list_topics List Topics ~164
List discussion topics in a course with unread counts and whether you must post before seeing replies. Read-only. Set only_announcements for announcements; read a thread with get_full_topic_view.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| limit | integer | – | Maximum number of items to return (one page of results). Smaller is faster. |
| only_announcements | boolean | – | If true, return announcements instead of discussion topics. |
| page | integer | – | Which page of results to show, starting at 1. Use it when a result says there are more. |
| search_term | string | – | Optional text filter on names or titles (at least 2 characters, case-insensitive). |
No output schema declared.
No examples provided.
list_upcoming_assignments List Upcoming Assignments ~88
List assignments and other planner items due in the next N days (default 7) across all active courses, soonest first. Read-only. Uses the same Planner feed as the Canvas dashboard; set include_completed to also show items already done.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Default 7 |
| include_completed | boolean | – | If true, also include assignments you have already submitted. |
| Name | Type | Req | Description |
|---|---|---|---|
| days | number | yes | – |
| items | array | yes | – |
No examples provided.
list_upcoming_events List Upcoming Events ~41
List your upcoming calendar events and assignment due dates, using Canvas's own default window. Read-only. For a specific date range, use list_calendar_events.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
mark_all_announcements_read Mark All Announcements Read ~72
Mark every unread announcement in the last N days as read, across all your courses or the ones you pick. Clears the unread badges in Canvas.
| Name | Type | Req | Description |
|---|---|---|---|
| course_ids | array | – | Course IDs; omit for all active courses. |
| days | integer | – | How far back to look. Default 30. |
No output schema declared.
No examples provided.
mark_all_entries_read Mark All Entries Read ~74
Mark every entry in a discussion topic as read for you. Only affects your unread counts.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| topic_id | string | yes | Discussion topic ID (numeric string). Get it from list_topics. |
No output schema declared.
No examples provided.
mark_announcement_read Mark Announcement Read ~62
Mark one course announcement as read, clearing its unread badge.
| Name | Type | Req | Description |
|---|---|---|---|
| announcement_id | string | yes | Announcement ID from list_announcements. |
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
No output schema declared.
No examples provided.
mark_conversation_read Mark Conversation Read ~56
Mark one Inbox conversation as read. Only affects you; the sender is not notified. Reverse with mark_conversation_unread.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | yes | Inbox conversation ID (numeric string). Get it from list_conversations. |
No output schema declared.
No examples provided.
mark_conversation_unread Mark Conversation Unread ~55
Mark one Inbox conversation as unread so it shows up again. Only affects you. Reverse with mark_conversation_read.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | yes | Inbox conversation ID (numeric string). Get it from list_conversations. |
No output schema declared.
No examples provided.
mark_entry_read Mark Entry Read ~95
Mark one discussion entry as read for you. Only affects your unread counts.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| entry_id | string | yes | Discussion entry ID (numeric string). Get it from get_full_topic_view or list_entries. |
| topic_id | string | yes | Discussion topic ID (numeric string). Get it from list_topics. |
No output schema declared.
No examples provided.
mark_module_item_done Mark Module Item Done ~101
Mark a module item as done to satisfy a 'mark as done' completion requirement. Shows in your instructor's progress view.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| item_id | string | yes | Module item ID (numeric string). Get it from list_module_items. |
| module_id | string | yes | Module ID (numeric string). Get it from list_modules. |
No output schema declared.
No examples provided.
mark_module_item_read Mark Module Item Read ~103
Mark a module item as viewed to satisfy a 'must view' requirement, without opening it. Shows in your instructor's progress view.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| item_id | string | yes | Module item ID (numeric string). Get it from list_module_items. |
| module_id | string | yes | Module ID (numeric string). Get it from list_modules. |
No output schema declared.
No examples provided.
mark_planner_item_done Mark Planner Item Done ~126
Check an item off (or back on) your Canvas To Do list. This only changes your own list; it does not submit anything.
| Name | Type | Req | Description |
|---|---|---|---|
| done | boolean | – | true (default) to mark it done, false to mark it not done again. |
| plannable_id | string | yes | The item's plannable_id from list_planner_items. |
| plannable_type | string | yes | The item type, from list_planner_items: assignment, quiz, discussion_topic, wiki_page, planner_note, calendar_event, announcement, assessment_request or sub_assignment. |
No output schema declared.
No examples provided.
mark_submission_read Mark Submission Read ~84
Mark your submission, including any new grade or comments, as read so the unread badge clears. Only affects you.
| Name | Type | Req | Description |
|---|---|---|---|
| assignment_id | string | yes | Assignment ID (numeric string). Get it from list_assignments or list_upcoming_assignments. |
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
No output schema declared.
No examples provided.
mark_topic_read Mark Topic Read ~81
Mark a discussion topic as read for you. Only affects your unread counts. Use mark_all_entries_read to also clear every reply.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| topic_id | string | yes | Discussion topic ID (numeric string). Get it from list_topics. |
No output schema declared.
No examples provided.
post_entry Post Entry ~155
Post a new top-level entry to a course discussion. Visible to the whole class. Use reply_to_entry to answer someone's entry. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to actually execute. Omit or set false to get a dry-run preview first. |
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| message | string | yes | Message text. Plain text or simple HTML. |
| topic_id | string | yes | Discussion topic ID (numeric string). Get it from list_topics. |
No output schema declared.
No examples provided.
post_group_discussion Post Group Discussion ~143
Post to a discussion inside a group workspace. Visible to your groupmates and instructors. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to actually execute. Omit or set false to get a dry-run preview first. |
| group_id | string | yes | Student group ID (numeric string). Get it from list_my_groups. |
| message | string | yes | Message text. Plain text or simple HTML. |
| topic_id | string | yes | Discussion topic ID (numeric string). Get it from list_topics. |
No output schema declared.
No examples provided.
post_submission_comment Post Submission Comment ~191
Post a comment on your own submission for an assignment, optionally with files attached. Your instructor sees it. To attach a file, upload it first with upload_comment_attachment. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]
| Name | Type | Req | Description |
|---|---|---|---|
| assignment_id | string | yes | Assignment ID (numeric string). Get it from list_assignments or list_upcoming_assignments. |
| comment | string | yes | Comment text, visible to your instructor. |
| confirm | boolean | – | Must be true to actually execute. Omit or set false to get a dry-run preview first. |
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| file_ids | array | – | Optional file IDs returned by upload_comment_attachment, to attach to this comment. |
No output schema declared.
No examples provided.
rate_entry Rate Entry ~127
Like (rating 1) or remove your like (rating 0) on a discussion entry, where the instructor enabled ratings. Others see the like count.
| Name | Type | Req | Description |
|---|---|---|---|
| course_id | string | yes | Canvas course ID, a numeric string such as "12345". Get it from list_courses. |
| entry_id | string | yes | Discussion entry ID (numeric string). Get it from get_full_topic_view or list_entries. |
| rating | integer | yes | 1 to like, 0 to remove |
| topic_id | string | yes | Discussion topic ID (numeric string). Get it from list_topics. |
No output schema declared.
No examples provided.
raw_canvas_request Raw Canvas Request ~170
Call any Canvas REST API endpoint directly, for anything the other tools don't cover. GET is read-only. POST, PUT and DELETE can change data: they are blocked when CANVAS_ALLOW_WRITES=false, need confirm=true, and quiz-submission writes are always refused.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | JSON body for POST/PUT |
| confirm | boolean | – | Required for POST/PUT/DELETE |
| max_items | integer | – | With paginate=true, stop after this many items. Default 200. |
| method | string | yes | HTTP method |
| paginate | boolean | – | Follow Link headers and collect all pages (GET only) |
| params | object | – | Query parameters |
| path | string | yes | API path after /api/v1, e.g. '/users/self/enrollments' |
No output schema declared.
No examples provided.
read_course_file Read Course File ~183
Read the text of a Canvas file so you can summarize it, quiz from it or answer questions about it. Read-only. Works with PDF, Word (.docx), PowerPoint (.pptx, including speaker notes), web pages and plain-text files up to 25 MB. Long files come back in parts: call again with next_offset. Scanned PDFs have no text. Get file_id from list_course_files or list_module_items.
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | string | yes | File ID (numeric string). Get it from list_course_files, list_my_files or list_group_files. |
| max_chars | integer | – | Most characters to return in one call. Default 30000, maximum 100000. |
| offset | integer | – | Character to start from, for reading the next part of a long file. Use next_offset from the previous call. Default 0. |
No output schema declared.
No examples provided.
How do I install the io.github.Fireiscoolsolo/canvas-lms-mcp-local server?
io.github.Fireiscoolsolo/canvas-lms-mcp-local runs locally as an npm package, launched with npx -y canvas-lms-mcp-local. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · canvas-lms-mcp-local
claude mcp add fireiscoolsolo-canvas-lms-mcp-local -- npx -y canvas-lms-mcp-local
What is the io.github.Fireiscoolsolo/canvas-lms-mcp-local server?
io.github.Fireiscoolsolo/canvas-lms-mcp-local is listed in the public MCP registry as io.github.Fireiscoolsolo/canvas-lms-mcp-local. Student-focused Canvas LMS: 237 tools for grades, deadlines, planning, submissions and study plans. This page covers its npm package (canvas-lms-mcp-local).
Is the io.github.Fireiscoolsolo/canvas-lms-mcp-local server safe to use?
io.github.Fireiscoolsolo/canvas-lms-mcp-local scores 72 out of 100 on VerifyMCP. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.Fireiscoolsolo/canvas-lms-mcp-local server expose?
io.github.Fireiscoolsolo/canvas-lms-mcp-local exposes 237 tools: whoami, get_my_profile, get_my_settings, check_token_expiry, get_rate_limit_status, and 232 more. Their descriptions and schemas cost roughly 24,732 tokens of context every time the server is loaded.
Is the io.github.Fireiscoolsolo/canvas-lms-mcp-local server still maintained?
io.github.Fireiscoolsolo/canvas-lms-mcp-local is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.Fireiscoolsolo/canvas-lms-mcp-local server under?
io.github.Fireiscoolsolo/canvas-lms-mcp-local declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the io.github.Fireiscoolsolo/canvas-lms-mcp-local server?
VerifyMCP ran 14 checks on io.github.Fireiscoolsolo/canvas-lms-mcp-local, covering Malware scan, Install scripts, Source repository, Provenance and 10 more. 2 items could not be completed, a gap on our side rather than a finding about io.github.Fireiscoolsolo/canvas-lms-mcp-local: Known CVEs and Dependency health. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.