Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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.

−7 this week 72 Trust /100

Last scanned (9 hours ago)

Scores higher than 43% of npm servers

Category Education and Research

Trust breakdown (7 categories)

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
What we tested

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 →

Changelog

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
Diagnostics

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 →

MCP tools · 237 exposed · ~24,732 tokens

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 →

Tool Tokens
list_group_pages ~97

List wiki pages in a group workspace with titles and URL slugs. Read-only.

NameTypeReqDescription
group_idstringyesStudent group ID (numeric string). Get it from list_my_groups.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
module_idstringyesModule ID (numeric string). Get it from list_modules.
pageinteger–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 ~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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–Which page of results to show, starting at 1. Use it when a result says there are more.
statearray–active, invited, completed, inactive
typearray–Optional enrollment type filter, e.g. "StudentEnrollment".

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–Which page of results to show, starting at 1. Use it when a result says there are more.
search_termstring–Optional text filter on names or titles (at least 2 characters, case-insensitive).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
course_idstring–Omit to check all active courses

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
quiz_idstringyesQuiz 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 ~90

List the appointment slots you have booked, from the past week through the next 60 days. Read-only. Cancel one with cancel_reservation.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
channel_idstringyesCommunication channel ID (numeric string). Get it from get_communication_channels.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–Which page of results to show, starting at 1. Use it when a result says there are more.
page_urlstringyesThe 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 ~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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–Which page of results to show, starting at 1. Use it when a result says there are more.
search_termstring–Optional text filter on names or titles (at least 2 characters, case-insensitive).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstring–Only this course (numeric ID from list_courses).
end_datestring–End of the range, YYYY-MM-DD. Default 14 days from now.
incomplete_onlyboolean–If true, leave out items you have already submitted or marked done.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
start_datestring–Start of the range, YYYY-MM-DD. Default today.

No output schema declared.

No examples provided.

list_planner_notes ~127

Your own Canvas to-do notes (planner notes). Only you see these.

NameTypeReqDescription
course_idstring–Only notes linked to this course.
end_datestring–Only notes on or before this date, YYYY-MM-DD.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–Which page of results to show, starting at 1. Use it when a result says there are more.
start_datestring–Only notes on or after this date, YYYY-MM-DD.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–Which page of results to show, starting at 1. Use it when a result says there are more.
quiz_idstringyesQuiz ID (numeric string). Get it from list_quizzes, or list_new_quizzes for New Quizzes.
quiz_submission_idstring–Quiz submission ID from get_my_quiz_submission.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–Which page of results to show, starting at 1. Use it when a result says there are more.
search_termstring–Optional text filter on names or titles (at least 2 characters, case-insensitive).

No output schema declared.

No examples provided.

list_rubrics ~114

List the rubrics in a course with titles, point totals and IDs. Read-only. Read one in full with get_rubric.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
assignment_idstringyesAssignment ID (numeric string). Get it from list_assignments or list_upcoming_assignments.
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
assignment_idstringyesAssignment ID (numeric string). Get it from list_assignments or list_upcoming_assignments.
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~110

List Canvas to-do items for a single course. Read-only. Use list_todo for all courses at once.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
pageinteger–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 ~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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
only_announcementsboolean–If true, return announcements instead of discussion topics.
pageinteger–Which page of results to show, starting at 1. Use it when a result says there are more.
search_termstring–Optional text filter on names or titles (at least 2 characters, case-insensitive).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
daysinteger–Default 7
include_completedboolean–If true, also include assignments you have already submitted.
NameTypeReqDescription
daysnumberyes–
itemsarrayyes–

No examples provided.

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 ~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.

NameTypeReqDescription
course_idsarray–Course IDs; omit for all active courses.
daysinteger–How far back to look. Default 30.

No output schema declared.

No examples provided.

mark_all_entries_read ~74

Mark every entry in a discussion topic as read for you. Only affects your unread counts.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
topic_idstringyesDiscussion topic ID (numeric string). Get it from list_topics.

No output schema declared.

No examples provided.

mark_announcement_read ~62

Mark one course announcement as read, clearing its unread badge.

NameTypeReqDescription
announcement_idstringyesAnnouncement ID from list_announcements.
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.

No output schema declared.

No examples provided.

mark_conversation_read ~56

Mark one Inbox conversation as read. Only affects you; the sender is not notified. Reverse with mark_conversation_unread.

NameTypeReqDescription
conversation_idstringyesInbox conversation ID (numeric string). Get it from list_conversations.

No output schema declared.

No examples provided.

mark_conversation_unread ~55

Mark one Inbox conversation as unread so it shows up again. Only affects you. Reverse with mark_conversation_read.

NameTypeReqDescription
conversation_idstringyesInbox conversation ID (numeric string). Get it from list_conversations.

No output schema declared.

No examples provided.

mark_entry_read ~95

Mark one discussion entry as read for you. Only affects your unread counts.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
entry_idstringyesDiscussion entry ID (numeric string). Get it from get_full_topic_view or list_entries.
topic_idstringyesDiscussion topic ID (numeric string). Get it from list_topics.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
item_idstringyesModule item ID (numeric string). Get it from list_module_items.
module_idstringyesModule ID (numeric string). Get it from list_modules.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
item_idstringyesModule item ID (numeric string). Get it from list_module_items.
module_idstringyesModule ID (numeric string). Get it from list_modules.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
doneboolean–true (default) to mark it done, false to mark it not done again.
plannable_idstringyesThe item's plannable_id from list_planner_items.
plannable_typestringyesThe 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 ~84

Mark your submission, including any new grade or comments, as read so the unread badge clears. Only affects you.

NameTypeReqDescription
assignment_idstringyesAssignment ID (numeric string). Get it from list_assignments or list_upcoming_assignments.
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
topic_idstringyesDiscussion topic ID (numeric string). Get it from list_topics.

No output schema declared.

No examples provided.

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.]

NameTypeReqDescription
confirmboolean–Must be true to actually execute. Omit or set false to get a dry-run preview first.
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
messagestringyesMessage text. Plain text or simple HTML.
topic_idstringyesDiscussion topic ID (numeric string). Get it from list_topics.

No output schema declared.

No examples provided.

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.]

NameTypeReqDescription
confirmboolean–Must be true to actually execute. Omit or set false to get a dry-run preview first.
group_idstringyesStudent group ID (numeric string). Get it from list_my_groups.
messagestringyesMessage text. Plain text or simple HTML.
topic_idstringyesDiscussion topic ID (numeric string). Get it from list_topics.

No output schema declared.

No examples provided.

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.]

NameTypeReqDescription
assignment_idstringyesAssignment ID (numeric string). Get it from list_assignments or list_upcoming_assignments.
commentstringyesComment text, visible to your instructor.
confirmboolean–Must be true to actually execute. Omit or set false to get a dry-run preview first.
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
file_idsarray–Optional file IDs returned by upload_comment_attachment, to attach to this comment.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
entry_idstringyesDiscussion entry ID (numeric string). Get it from get_full_topic_view or list_entries.
ratingintegeryes1 to like, 0 to remove
topic_idstringyesDiscussion topic ID (numeric string). Get it from list_topics.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
bodyobject–JSON body for POST/PUT
confirmboolean–Required for POST/PUT/DELETE
max_itemsinteger–With paginate=true, stop after this many items. Default 200.
methodstringyesHTTP method
paginateboolean–Follow Link headers and collect all pages (GET only)
paramsobject–Query parameters
pathstringyesAPI path after /api/v1, e.g. '/users/self/enrollments'

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
file_idstringyesFile ID (numeric string). Get it from list_course_files, list_my_files or list_group_files.
max_charsinteger–Most characters to return in one call. Default 30000, maximum 100000.
offsetinteger–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.

Install

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

# add to Claude Code
claude mcp add fireiscoolsolo-canvas-lms-mcp-local -- npx -y canvas-lms-mcp-local
Common questions

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.