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-server

NPM · CANVAS-LMS-MCP-REMOTE

Self-hosted Canvas LMS for every device: 237 student tools over HTTP with OAuth and phone alerts.

+3 this week 77 Trust /100

Last scanned (4 hours ago)

Scores higher than 55% 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 Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 39 of 106 dependencies flagged as unhealthy. View diagnostics → Partial
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 Management30
  • Stability observed for 9 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
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 0
    • Package version: 1.3.0 → 1.3.1 functional
  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Nov 26 0
    • Schema quality: pass → fail ▼ functional
    • First check of Tool coverage: 1 functional
    • Package version: 1.2.3 → 1.3.0 functional
  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 31 Oct 26 −14
    • Malware scan: pass → unverified ▼ security
    • Package version: 1.2.2 → 1.2.3 functional
  • 30 Oct 26 0
    • Package version: 1.2.0 → 1.2.2 functional
  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

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-remote@1.3.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 →

Dependencies 106 packages
Packages resolved 106
Stale 39
Tree resolution Complete

Background: SBOMs and build attestations, explained →

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
add_favorite_course ~63

Star a course as a favorite so it shows on your Canvas dashboard. Only affects your own view. Reverse with remove_favorite_course.

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

No output schema declared.

No examples provided.

add_recipients ~131

Add more people to an existing Inbox conversation so they receive its messages. Get user IDs from find_recipients. [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.
conversation_idstringyesInbox conversation ID (numeric string). Get it from list_conversations.
recipientsarrayyesUser IDs to add, from find_recipients.

No output schema declared.

No examples provided.

archive_conversation ~52

Archive an Inbox conversation so it leaves your inbox view; it stays under the archived scope. Only affects you.

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

No output schema declared.

No examples provided.

assignment_brief ~110

Everything needed to start an assignment, in one call: the instructions as clean text, due and lock dates, how to submit, attempts, the rubric, the late policy, linked files, group and peer-review details, and your current status.

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.

batch_update_conversations ~145

Apply one action (mark read or unread, star, unstar, archive or delete) to many Inbox conversations at once. Only affects your own inbox. [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.
conversation_idsarrayyesInbox conversation IDs (numeric strings) from list_conversations.
eventstringyesAction to apply to every listed conversation. "destroy" deletes them from your inbox for good.

No output schema declared.

No examples provided.

calculate_gpa ~272

Calculate your GPA on a 4.0 scale from your current Canvas grades, weighted by credit hours. Read-only. Uses the letter grade Canvas shows, or converts the percent (93+ A, 90 A-, 87 B+ and so on). Supports what-if grades and extra points for honors or AP classes. Pass-fail courses are listed as excluded.

NameTypeReqDescription
creditsobject–Credit hours per course, keyed by course ID, name or code, e.g. {"Calculus I": 4, "ENG101": 3}. Courses not listed use default_credits.
default_creditsnumber–Credit hours for courses not in credits. Default 3.
extra_pointsobject–Extra grade points for weighted GPA, keyed like credits, e.g. {"AP Biology": 1, "Honors English": 0.5}. Leave empty for an unweighted GPA.
use_final_scoreboolean–True to use the final score, which counts missing work as zero, instead of the current score. Default false.
what_ifobject–Pretend grades, keyed by course ID, name or code. Each value is a letter ("B+") or a percent (88), e.g. {"Chemistry": "A-"}.

No output schema declared.

No examples provided.

cancel_reservation ~134

Cancel an appointment slot you booked. The instructor can see the cancellation. Get event_id from list_my_reservations. [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
cancel_reasonstring–Optional reason shown to the instructor.
confirmboolean–Must be true to actually execute. Omit or set false to get a dry-run preview first.
event_idstringyesCalendar event ID (numeric string). Get it from list_calendar_events or list_my_reservations.

No output schema declared.

No examples provided.

check_token_expiry ~53

Check when your Canvas access token expires and warn if it is close. Read-only. Canvas often forces student tokens to expire after 30–120 days without warning, so run this at the start of a term.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

compute_needed_score ~97

Calculate the average you need on remaining ungraded work in a course to reach a target final percentage, accounting for group weights. Pure math with no writes. Use what_if_grade to test one specific score with Canvas itself.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
target_percentnumberyesTarget final grade percentage, e.g. 90

No output schema declared.

No examples provided.

course_contacts ~76

Who to contact in a course and when: the teachers and TAs (with the user IDs send_message needs), office hours found in the syllabus, and office-hour or advising sign-up slots. Read-only.

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

No output schema declared.

No examples provided.

course_health_check ~71

Get a full status check for one course: current grade, missing and ungraded work, upcoming deadlines and unread discussions. Read-only. Use semester_snapshot for all courses at once.

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

No output schema declared.

No examples provided.

create_bookmark ~104

Save a Canvas bookmark to a course page or any Canvas URL. Only you see it. Returns the new bookmark with its ID. Use list_bookmarks to see existing ones.

NameTypeReqDescription
namestringyesLabel for the bookmark, e.g. "BIO 101 syllabus".
positioninteger–Optional position in the bookmark list (1 = first).
urlstringyesCanvas URL to bookmark, e.g. "/courses/12345/assignments".

No output schema declared.

No examples provided.

create_content_export ~106

Start a course export as a .imscc Common Cartridge or a zip of files. Canvas packages it in the background; poll get_content_export with the returned ID. export_course_archive does export and download in one step.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
export_typestring–"common_cartridge" (default, .imscc) or "zip" (files only).

No output schema declared.

No examples provided.

create_folder ~96

Create a folder in your personal Canvas storage (not in a course). Only you can see it. Returns the new folder with its ID. Upload into it with upload_to_my_files.

NameTypeReqDescription
namestringyesFolder name, e.g. "Spring notes".
parent_folder_idstring–ID of the folder to create this one inside, from list_my_files or an earlier create_folder. Omit for the top level.

No output schema declared.

No examples provided.

create_personal_event ~138

Create an event on your own Canvas calendar (only you see it). Returns the new event with its ID. Use update_calendar_event to change it later.

NameTypeReqDescription
descriptionstring–Optional description text.
end_atstring–End time, ISO 8601, e.g. "2026-11-05T15:00:00-05:00".
location_namestring–Optional location name, e.g. "Library room 2".
start_atstringyesISO 8601
titlestringyesEvent title, e.g. "Study for BIO midterm".

No output schema declared.

No examples provided.

create_planner_note ~143

Add a to-do note to your Canvas planner, e.g. "Email Prof. Lee about the extension". It shows on your Canvas To Do list and calendar. Only you see it.

NameTypeReqDescription
course_idstring–Optional course to file it under (numeric ID from list_courses).
detailsstring–Optional longer notes.
titlestringyesWhat to do, e.g. "Start the lab report".
todo_datestringyesWhen, as an ISO 8601 date or date-time, e.g. "2026-11-07" or "2026-11-07T18:00:00".

No output schema declared.

No examples provided.

daily_briefing ~49

Today at a glance: today's classes and events, what is due today and tomorrow, missing work, grades posted in the last day, unread announcements and your unread inbox count, in one call.

Input schema present but exposes no named parameters.

NameTypeReqDescription
datestringyes–
due_todayarrayyes–
due_tomorrowarrayyes–
events_todayarrayyes–
missingarrayyes–
missing_countnumberyes–
new_gradesarrayyes–
timezonestringyes–
unread_announcementsarrayyes–
unread_inboxnumber|nullyes–

No examples provided.

deadline_conflict_check ~61

Find days in the next N days where several assignments are due at once, weighted by points, so you can spot pileups early. Read-only.

NameTypeReqDescription
daysinteger–Default 30
min_itemsinteger–Default 2

No output schema declared.

No examples provided.

delete_bookmark ~49

Delete one of your saved Canvas bookmarks. Only affects you. Get bookmark_id from list_bookmarks.

NameTypeReqDescription
bookmark_idstringyesBookmark ID (numeric string). Get it from list_bookmarks.

No output schema declared.

No examples provided.

delete_calendar_event ~120

Delete a calendar event you own, such as a personal event. Cannot be undone. Course events return a permission error. [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.
event_idstringyesCalendar event ID (numeric string). Get it from list_calendar_events or list_my_reservations.

No output schema declared.

No examples provided.

delete_conversation ~109

Delete an Inbox conversation from your own inbox. Other participants keep their copy. Cannot be undone. [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.
conversation_idstringyesInbox conversation ID (numeric string). Get it from list_conversations.

No output schema declared.

No examples provided.

delete_my_entry ~163

Delete one of your own discussion entries, if the course allows it. Classmates see that an entry was removed. [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.
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.

delete_my_file ~118

Delete a file from your personal Canvas storage. Cannot be undone. Get file_id from list_my_files. [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.
file_idstringyesFile ID (numeric string). Get it from list_course_files, list_my_files or list_group_files.

No output schema declared.

No examples provided.

delete_planner_note ~42

Delete one of your Canvas planner notes. This only affects your own notes.

NameTypeReqDescription
note_idstringyesPlanner note ID, from list_planner_notes.

No output schema declared.

No examples provided.

diff_since_last_check ~114

List what changed since a given time, or since the last time you asked: newly posted grades, announcements, discussion replies and inbox messages, from your activity stream. Read-only apart from remembering when you last checked, so "what's new?" works without a date.

NameTypeReqDescription
sincestring–ISO 8601 timestamp, e.g. 2026-09-01T00:00:00Z. Omit to use the last time this was checked (or 3 days ago the first time).

No output schema declared.

No examples provided.

dismiss_global_announcement ~62

Close a school-wide announcement so it stops showing on your Canvas dashboard. Only affects you.

NameTypeReqDescription
account_idstring–account_id from list_global_announcements. Default "self".
notification_idstringyesAnnouncement ID from list_global_announcements.

No output schema declared.

No examples provided.

dismiss_planner_item ~103

Hide an item from your Canvas To Do list and its "new activity" badge, without marking it done. This only changes your own list.

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

download_all_course_files ~149

Download every file you can access in a course to local disk, up to max_files (default 50). Writes local files only; nothing changes in Canvas. Can take many requests and a lot of disk space; use download_file for one file.

NameTypeReqDescription
content_typesarray–Optional MIME types to include, e.g. ["application/pdf"]. Omit for every file.
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
dest_dirstring–Local folder to save into. Defaults to the server's download folder (CANVAS_DOWNLOAD_DIR).
max_filesinteger–Default 50

No output schema declared.

No examples provided.

download_file ~92

Download one Canvas file and save it to local disk. Returns the saved path and size. Get file_id from list_course_files or list_my_files.

NameTypeReqDescription
dest_dirstring–Local folder to save into. Defaults to the server's download folder (CANVAS_DOWNLOAD_DIR).
file_idstringyesFile ID (numeric string). Get it from list_course_files, list_my_files or list_group_files.

No output schema declared.

No examples provided.

download_media_captions ~117

Download a lecture's caption track and save it as a text transcript on local disk. Returns the saved path. Get media_id from list_media_objects and track_id from get_media_captions.

NameTypeReqDescription
dest_dirstring–Local folder to save into. Defaults to the server's download folder (CANVAS_DOWNLOAD_DIR).
media_idstringyesMedia object ID, e.g. "m-abc123". Get it from list_media_objects.
track_idstring–Defaults to the first English track

No output schema declared.

No examples provided.

download_submission_attachment ~84

Download one file attached to your submission and save it to local disk. Returns the saved path. Get the URL from list_submission_attachments.

NameTypeReqDescription
filenamestring–File name to save as. Defaults to the attachment's own name.
urlstringyesDownload URL of the attachment: the attachments[].url field from list_submission_attachments or get_my_submission.

No output schema declared.

No examples provided.

edit_my_entry ~182

Replace the text of one of your own discussion entries, if the course allows editing. The new text is visible to the whole class. [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.
entry_idstringyesDiscussion entry ID (numeric string). Get it from get_full_topic_view or list_entries.
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.

export_all_courses ~123

Ask Canvas to package every active course (or the ones you pick) as a downloadable .imscc archive, in one step. Nothing in the courses changes. Use before the term ends. [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_idsarray–Course IDs; omit for all active courses.

No output schema declared.

No examples provided.

export_course_archive ~116

Export a whole course, wait for Canvas to package it, then download the .imscc archive to local disk. Nothing in the course changes. Can take several minutes; use it before a term ends and access disappears.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
dest_dirstring–Local folder to save into. Defaults to the server's download folder (CANVAS_DOWNLOAD_DIR).
timeout_secondsinteger–Default 300

No output schema declared.

No examples provided.

export_deadlines_ics ~134

Save your upcoming Canvas deadlines as an .ics calendar file you can import into Google Calendar, Apple Calendar or Outlook, with a reminder before each one. Nothing changes in Canvas.

NameTypeReqDescription
daysinteger–How many days ahead to include. Default 60.
include_completedboolean–If true, also include work you have already submitted.
include_eventsboolean–If true, also include calendar events such as class meetings, not just deadlines.
remind_minutes_beforeinteger–Reminder this many minutes before each deadline. Default 1440 (one day). 0 for no reminder.

No output schema declared.

No examples provided.

final_grade_scenarios ~131

What-if planning for a whole course: your projected final grade if you average 100, 90, 80, 70 or 60% on everything not graded yet, and the average you need on the rest for each letter grade. Uses the course's assignment-group weights and its own letter cutoffs when Canvas shares them. Read-only.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
targetsarray–Your own target percentages instead of letter grades, e.g. [93, 85].

No output schema declared.

No examples provided.

find_recipients ~100

Search by name for people you are allowed to message, optionally within one course. Read-only. Returns the user IDs that send_message and add_recipients need.

NameTypeReqDescription
course_idstring–Canvas 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.
searchstringyesName fragment

No output schema declared.

No examples provided.

get_activity_stream ~133

Get recent activity across all your courses: new announcements, discussion replies, graded submissions and messages, newest first. Read-only. Titles and messages are fenced as untrusted text. For counts only, use get_activity_stream_summary; for one course, use get_course_activity_stream.

NameTypeReqDescription
limitinteger–Maximum number of items to return (one page of results). Smaller is faster.
only_active_coursesboolean–Only include activity from currently active courses. Default true.
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.

get_activity_stream_summary ~53

Get counts of unread activity by type (announcements, discussions, messages, submissions) across your courses. Read-only and very cheap. Call it before get_activity_stream to see whether the full stream is worth pulling.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_all_grades ~52

Get your current and final grades for every active course in one call, including unposted grades where Canvas shows them. Read-only. Use get_course_grade_breakdown to see how one course's grade is calculated.

Input schema present but exposes no named parameters.

NameTypeReqDescription
coursesarrayyes–

No examples provided.

get_all_unread ~39

Get every unread item in one call: inbox messages, discussion replies, announcements and activity stream items. Read-only; nothing is marked as read.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_appointment_group ~68

Get one appointment group (office hours or advising) with its time slots and remaining capacity. Read-only. Book a slot with reserve_appointment_slot using a slot ID from here.

NameTypeReqDescription
group_idstringyesAppointment group ID (numeric string). Get it from list_appointment_groups.

No output schema declared.

No examples provided.

get_assignment ~105

Get full details for one assignment: instructions, due/lock dates, points, submission types and the rubric. Read-only. Prompt text written by the instructor is fenced as untrusted. Get assignment_id from list_assignments.

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.

get_assignment_dates ~123

List due, lock and unlock dates for every assignment in a course, sorted by due date, in a compact form. Read-only. Use list_assignments when you also need submission status.

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.

get_assignment_group ~91

Get one assignment group (e.g. "Homework") with its weight, drop rules and assignments. Read-only. Use list_assignment_groups to see all groups and their IDs.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
group_idstringyesAssignment group ID (numeric string). Get it from list_assignment_groups.

No output schema declared.

No examples provided.

get_calendar_event ~69

Get one calendar event: title, start and end time, location, description and the course it belongs to. Read-only. Get event_id from list_calendar_events.

NameTypeReqDescription
event_idstringyesCalendar event ID (numeric string). Get it from list_calendar_events or list_my_reservations.

No output schema declared.

No examples provided.

get_calendar_feed_url ~41

Your personal Canvas calendar feed link and how to subscribe to it in Google Calendar, Apple Calendar or Outlook, so Canvas deadlines show up there and stay updated.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_communication_channels ~96

List the notification channels on your account (email addresses, SMS numbers, push) with their IDs and status. Read-only. Use a channel_id from here with get_notification_preferences.

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.

get_content_export ~78

Check a course export's status and get its download URL once Canvas has finished. Read-only. Start an export with create_content_export.

NameTypeReqDescription
course_idstringyesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
export_idstringyesContent export ID returned by create_content_export.

No output schema declared.

No examples provided.

get_conversation ~73

Get the full message thread for one Inbox conversation, with authors and times. Read-only unless mark_as_read is true. Message bodies are fenced as untrusted.

NameTypeReqDescription
conversation_idstringyesInbox conversation ID (numeric string). Get it from list_conversations.
mark_as_readboolean–Default false

No output schema declared.

No examples provided.

Install

How do I install the io.github.Fireiscoolsolo/canvas-lms-mcp-server server?

io.github.Fireiscoolsolo/canvas-lms-mcp-server runs locally as an npm package, launched with npx -y canvas-lms-mcp-remote. 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-remote

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

What is the io.github.Fireiscoolsolo/canvas-lms-mcp-server server?

io.github.Fireiscoolsolo/canvas-lms-mcp-server is listed in the public MCP registry as io.github.Fireiscoolsolo/canvas-lms-mcp-server. Self-hosted Canvas LMS for every device: 237 student tools over HTTP with OAuth and phone alerts. This page covers its npm package (canvas-lms-mcp-remote).

Is the io.github.Fireiscoolsolo/canvas-lms-mcp-server server safe to use?

io.github.Fireiscoolsolo/canvas-lms-mcp-server scores 77 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. 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-server server expose?

io.github.Fireiscoolsolo/canvas-lms-mcp-server 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-server server still maintained?

io.github.Fireiscoolsolo/canvas-lms-mcp-server 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-server server under?

io.github.Fireiscoolsolo/canvas-lms-mcp-server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.