Canvas LMS MCP for students

io.github.AnonymousOnyx22由 GitHub 帳號 AnonymousOnyx22 發布v0.1.10更新於 Nov 1, 2026

Canvas LMS MCP server for students. Read only Canvas courses, grades, due dates, plus .ics export.

已驗證STDIO僅桌面效率與工作流知識與記憶

概覽

AI 產生的概覽

唯讀的 MCP 伺服器,讓助理查詢學生在 Canvas 的課程、作業、截止日期、成績、公告與課程內容。

可以做什麼
  • 列出課程、待辦事項、即將到期與缺交的作業以及行事曆事件
  • 讀取各課程成績、作業分數、繳交回饋與目標分數計算
  • 瀏覽模組、模組進度、課程大綱文字、討論、測驗與作業附帶檔案
  • 彙整公告、新評分作業、未讀討論回覆與收件匣訊息
  • 將截止日期與事件匯出為 iCalendar 檔案,或直接回傳行事曆文字
適用情境
適合學校使用 Canvas 的學生,想直接問 AI 助理有哪些作業到期、缺交了什麼、成績如何組成或最近有什麼更新,而不必打開 Canvas。
執行需求
透過 npx 在本機執行,需要 Node.js。需要 CANVAS_BASE_URL(學校的 Canvas 網址)與 CANVAS_API_TOKEN(在 Canvas 的 Account > Settings 建立的個人存取權杖)。部分學校停用了學生建立權杖的功能,此時無法使用。
安裝前請注意
Canvas 存取權杖是存放在本機 MCP 設定中的憑證,只會傳送到所設定的 Canvas 網址,可隨時在 Canvas 設定中撤銷。伺服器在 Canvas 中為唯讀,但行事曆匯出會在你指定的資料夾寫入一個 .ics 檔案。課程名稱、成績與教師電子郵件會提供給 AI 應用程式。與 Instructure 無關。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Canvas LMS MCP for students,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Canvas LMS MCP for students

[tests]

Ask your AI what's actually left to do in Canvas.

Canvas LMS MCP is a free, open source MCP server for Claude, Cursor and other AI apps that run a local MCP server. It reads your Canvas courses, quizzes, files, due dates, grades and announcements, and it is read only in Canvas: it never submits, edits or deletes anything there. The one thing it writes is an .ics calendar file on your own computer, and only when you ask it to.

Install and run it with npx, no install step needed:

bash
npx -y canvas-lms-student-mcp

It reads two environment variables: CANVAS_BASE_URL, your school's Canvas address, and CANVAS_API_TOKEN, a token you create in Canvas.

Works with any school that uses Canvas. Not affiliated with Instructure. Free forever, no sign up and no subscription. Your login details only ever go to your own school.

Quick start

  1. In Canvas, go to Account > Settings, scroll to Approved Integrations and click New Access Token. Copy it.
  2. Add this to your AI app's MCP config (for Claude Desktop that's claude_desktop_config.json):
json
{  "mcpServers": {    "canvas": {      "command": "npx",      "args": ["-y", "canvas-lms-student-mcp"],      "env": {        "CANVAS_BASE_URL": "https://yourschool.instructure.com",        "CANVAS_API_TOKEN": "paste-your-token-here"      }    }  }}
  1. Restart your AI app and ask something like "what's due this week?"

To check your setup first, run npx canvas-lms-student-mcp doctor with the two environment variables set.

Some schools turn off student access tokens. If you don't see the New Access Token button, your school has disabled it and this server can't connect to your account.

What you can ask

  • "What's due this week?"
  • "Do I have anything missing or overdue?"
  • "What's my grade in each class, and which assignments make it up?"
  • "What did my instructors announce lately?"
  • "What's new in Canvas since last week?"
  • "Show me what's in the Week 3 module for Networking."
  • "Which assignments are still due in my Networking 1 course?"
  • "Put my Canvas due dates in Google Calendar."

Tools

All 21 tools read from Canvas LMS and none of them can submit, edit or delete anything there. Every tool description includes an example prompt your AI can copy, and the Ask like column repeats those prompts here. The last one, export_due_dates_calendar, writes an .ics file to a folder you name.

Where a tool works on one course, you can name the course instead of looking up its number. Give the Canvas course ID or the course name, for example "Networking 1", and the name is matched against the list get_my_courses shows. A name that fits no course says so and points back at get_my_courses.

ToolWhat it doesAsk like
get_my_coursesYour active courses and their IDs"What are my Canvas courses this term?"
get_todoYour Canvas to-do list"What does Canvas say I still need to do?"
get_upcoming_due_datesUpcoming assignments and events, soonest first, with an optional days_ahead window"What is due in the next 3 days?"
get_quizzesQuizzes and exams with open, due and close times, time limit, attempts used and score"Which Canvas quizzes and exams are coming up and how long do I get?"
get_missing_assignmentsPast due work you haven't submitted"What am I missing in Canvas?"
get_assignmentsAssignments for a course by ID or name, with due dates and submission status"Which Canvas assignments in Networking 1 are overdue?"
get_my_gradesCurrent grade for each course, plus the assignment scores and submission status behind it"What is my grade in each Canvas course and which assignments make it up?"
get_course_contentModules and items for a course by ID or name"Show me the Week 3 module in my Canvas Networking course."
get_course_modulesModule progress for a course: each module's state and what each item needs from you, done or not"Which modules do I still have to finish in my Canvas Networking course?"
get_syllabusA course's syllabus text, by ID or name"What does the Canvas syllabus say about grading in Scripting?"
get_course_peopleTeachers and TAs of a course by ID or name, with role and email, and an optional role filter"Who teaches my Canvas Networking course and how do I email them?"
get_announcementsRecent announcements, for the courses you name or for all of them"What did my instructors announce in Canvas lately?"
get_whats_newOne catch up: recent announcements, newly graded work and unread discussion replies"What's new in Canvas since last week?"
get_inboxUnread Canvas inbox conversations with who they are with, the date and a preview"Did any instructor message me in Canvas?"
get_discussionsDiscussion topics for a course by ID or name"What discussions are open in my Canvas Networking course?"
get_calendar_eventsCalendar events between two dates"What is on my Canvas calendar between 2026-10-01 and 2026-10-31?"
get_target_gradeWhat score is needed on remaining work to reach a target percent"What do I need on the rest of my work in Networking 1 to get an 85 percent?"
get_assignment_filesThe files linked in one assignment's instructions, with name, type, size and a link"What files come with the Lab 4 assignment in Networking 1?"
get_submission_feedbackThe instructor's comments on your graded submission, with the score and grade"What did the teacher say about my Lab 4 submission in Networking 1?"
get_fileOne Canvas file by ID. Text, CSV, JSON and HTML files come back as text, other types give the name, type and size"Open Canvas file 501 and summarize it."
export_due_dates_calendarAn .ics file with your due dates, ready to import into Google Calendar or Apple Calendar"Put my Canvas due dates in Google Calendar."

Calendar export

export_due_dates_calendar turns your Canvas due dates and your Canvas calendar events into an iCalendar file. Name a folder and the file is saved there, for example "Save my Canvas due dates to my Documents folder as an .ics file". Open the file or import it in Google Calendar, Apple Calendar or Outlook.

The file holds the next 30 days and only the work you still owe. Use days_ahead for a longer window, course_id for one course by ID or name, and include_submitted to add the work you already handed in. Each event carries the course name, the points, the submission status, a link back to Canvas and a reminder the day before. Leave the folder out and the calendar text comes back instead, so you can save it under any name you like.

Privacy and security

  • Your token stays on your computer. It is only sent to your own school's Canvas address.
  • Nothing is sent to any other server by this project.
  • Twenty tools are marked read only. The calendar export writes one .ics file in a folder you name, and nothing else.
  • Revoke the token any time in Canvas settings.

Troubleshooting

Errors from Canvas and from the connection say what went wrong and what to fix. The most common ones:

MessageFix
Not signed inYour token is missing, expired or was revoked. Make a new one in Canvas (Account > Settings > New Access Token), then run npx canvas-lms-student-mcp doctor.
Access deniedYour school turned that feature off for students, or the token belongs to a different Canvas account.
Not foundCheck the course name or ID with get_my_courses. If every request says not found, CANVAS_BASE_URL is wrong.
Rate limitedWait the number of seconds the message says, then try again.
Could not reachThe host in CANVAS_BASE_URL does not exist. Check the spelling, for example https://myschool.instructure.com.
did not return Canvas API JSONThe address in CANVAS_BASE_URL is not a Canvas site. Use your school's Canvas address with no extra path.

Development

bash
npm installnpm run buildnpm test

Tests run against a fake Canvas server, so they need no account or network. The doctor command, the error messages for a bad token, access denied, a rate limit and a reply that is not Canvas, the .ics calendar export and the lookup of a course by name are part of that suite. A metadata test keeps package.json, server.json, glama.json, llms.txt and the server code on one version number, checks that the tool list in the docs still matches the tools the server registers, counts the read only tools from the code so the number in the docs follows the tools, and checks that the registry entry lists the same environment variables the code reads. Pushing to main and opening a pull request run the same build and test, so the badge at the top of this page shows the current result.

The npm package ships two registry files: server.json for the Model Context Protocol registry and glama.json for the Glama directory. Both carry the name, the description, the version, the license, the keywords, the repository and the homepage, so a listing shows what the server does and where the code lives. The server.json entry also names npx as the runtime and lists the two environment variables a listing site should ask for, with CANVAS_API_TOKEN marked as a secret value. It carries the GitHub repository id as well, and that id stays the same when a repository is renamed.

Why Canvas MCP

If you searched for a Canvas MCP server, this is the one for Canvas. It is free, open source and read only: it can look at your courses, due dates, grades and announcements, and it cannot submit, edit or delete anything in Canvas. You sign in with a token you create in your own Canvas account, and you start it with one npx command.

Canvas (Instructure) and Brightspace (D2L) are separate products, so a server for one cannot sign in to the other or read its courses. If your school runs Brightspace instead, use Brightspace MCP (brightspace-d2l-mcp on npm), our Brightspace server, which is also read only. Neither one moves work or grades between the two systems.

Here is what the 21 tools cover on Canvas, so you can check that your question has a tool before you install it.

Canvas featureToolWhat you get
Your coursesget_my_coursesActive courses with their course code and Canvas course ID
To do listget_todoAssignments and discussions Canvas still lists as to do, with due dates
Upcoming workget_upcoming_due_datesAssignments and events across all courses, soonest first, with an optional days_ahead window
Missing workget_missing_assignmentsPast due assignments you have not submitted, with the course and the day each was due
Assignmentsget_assignmentsDue dates, points and submission status for one course, with an optional bucket filter
Gradesget_my_gradesCurrent percent and letter grade for each course, plus the scored work behind it
Modulesget_course_contentModules and their items for one course
Module progressget_course_modulesModule state, and for each item what Canvas requires and whether you have done it, with only_open
Syllabusget_syllabusSyllabus text with the HTML removed
Instructors and TAsget_course_peopleTeachers and teaching assistants for one course with their email when Canvas shows it, filtered by role
Announcementsget_announcementsRecent announcements for all courses or the ones you name
What changedget_whats_newAnnouncements, newly graded work and unread discussion replies in one window
Inboxget_inboxUnread inbox conversations with who they are with and a preview, with unread_only, limit and page
Discussionsget_discussionsDiscussion topics for one course, with unread counts, with limit and page
Quizzes and examsget_quizzesOpen, due and close times, time limit, attempts used and score, for upcoming or past quizzes
Calendarget_calendar_eventsCanvas events and assignment due dates between two dates, with limit and page
Target gradeget_target_gradeThe score needed on remaining work to reach a target percent, with the best and worst finish
Assignment filesget_assignment_filesFiles linked in one assignment's instructions, with type, size and a Canvas link. It does not download them.
Submission feedbackget_submission_feedbackYour score and the instructor's comments on one graded submission
Read a fileget_fileOne file by its Canvas file ID. Text, CSV, JSON and HTML files come back as text. PDF, Word, slide deck and image files return only the name, type and size. Files over 5 MB are not downloaded.
Calendar exportexport_due_dates_calendarAn .ics file of due dates and events, or the text to save yourself. It writes the file on your computer.

More free student MCP servers

All free, open source and read only where they touch your accounts. Browse the full list at brightspacemcp.com/more-mcps.

ServerWhat it does
Brightspace MCPD2L Brightspace for AI. Due dates with real submission status, grades, a target grade calculator and course files.
Moodle MCPMoodle for AI, read only. Due dates, overdue work, grades and announcements.
Google Classroom MCPGoogle Classroom for AI, read only. Todos, due dates, missing work and grades.
GPA Calculator MCPGPA, grade conversion and the grade you need on the final, for AI. Works offline, no account.
Citations MCPAPA, MLA and Chicago citations from a DOI, an ISBN or typed details. No account.
Study Planner MCPExam study schedules, spaced repetition dates, pomodoro plans and assignment milestones. Works offline.
Paper Finder MCPSearch scholarly papers, find open access copies and related work through OpenAlex. No key needed.
BibTeX Reference Manager MCPClean, convert, dedupe and lint BibTeX, RIS and CSL JSON reference lists, and make cite keys. Works offline.
Open Textbook Finder MCPFind free legal copies of textbooks on OpenStax, DOAB and Open Library, look up editions by ISBN and suggest cheaper older ones.
STEM Calculator MCPChemistry and physics homework math: molar mass, balancing equations, grams to moles, unit conversion and significant figures. Works offline.
Essay Stats MCPOffline writing metrics for essays. Word and page counts, readability scores, passive voice, repeated openers, filler words, long sentences and word limit checks, so students can check their work against assignment requirements. No account, no network.
Syllabus to Calendar MCPSyllabus to calendar MCP server. Extract dates from syllabus text, build an ics calendar, expand recurring classes and merge calendars. Works offline, no account.
Job Application Tracker MCPJob application tracker MCP server. Track internships, jobs, interviews and deadlines offline, see what is coming up, and export your list as CSV or Markdown. No account and no API keys.

License

MIT

來源:README.md,提交 b6ec964

工具

16

get_my_courses

My courses

List your active Canvas courses with their Canvas course IDs. Use a course ID or a course name in the other tools. Example: "What are my Canvas courses this term?"

無需輸入參數。

get_todo

To-do list

Your Canvas to-do list: assignments and discussions Canvas says still need attention, with due dates. Example: "What does Canvas say I still need to do?"

無需輸入參數。

get_upcoming_due_dates

Upcoming due dates

Upcoming assignments and events across every Canvas course, soonest first. Pass days_ahead to look only that many days ahead, for example 3. Leave it out and every upcoming due date Canvas returns is included. Example: "What is due in the next 3 days?"

輸入參數days_ahead

get_missing_assignments

Missing assignments

Past-due Canvas assignments you have not submitted, with the course and the day each was due. Example: "What am I missing in Canvas?"

無需輸入參數。

get_assignments

Course assignments

Assignments for one Canvas course. Pass course_id as the Canvas course ID or as the course name, for example "Networking 1", and get due dates, points and submission status: not submitted, submitted, graded, missing or excused. Set bucket to filter, for example overdue. Example: "Which Canvas assignments in Networking 1 are overdue?"

輸入參數bucketcourse_id必填

get_my_grades

My grades

Your current grade in each active Canvas course from the Canvas gradebook, with the assignments behind each grade: your score, the points possible and the submission status. Pass course_id as the Canvas course ID or as the course name to limit the grades and the breakdown to one course. Example: "What is my grade in each Canvas course and which assignments make it up?"

輸入參數course_id

get_course_content

Course content

Modules and module items for one Canvas course. Pass course_id as the Canvas course ID or as the course name. Example: "Show me the Week 3 module in my Canvas Networking course."

輸入參數course_id必填

get_syllabus

Syllabus

The syllabus text for one Canvas course, with HTML removed. Pass course_id as the Canvas course ID or as the course name. Example: "What does the Canvas syllabus say about grading in Scripting?"

輸入參數course_id必填

get_announcements

Announcements

Recent Canvas announcements, either for the course_ids you pass or for all your active courses. Each course id can be the Canvas course ID or the course name. Pass limit to show fewer or more than 20 announcements, and page to see the next ones. Example: "What did my instructors announce in Canvas lately?"

輸入參數pagelimitcourse_ids

get_whats_new

What's new

One catch up across your Canvas courses: announcements posted in the last few days, assignments graded in that window and discussions that still have unread replies. Pass since_days to change the window, 7 by default, or course_id as the Canvas course ID or as the course name to check one course. Pass limit and page to step through long lists, 20 items per section by default. Example: "What's new in Canvas since last week?"

輸入參數pagelimitcourse_idsince_days

get_discussions

Discussions

Discussion topics for one Canvas course, with unread counts. Pass course_id as the Canvas course ID or as the course name. Example: "What discussions are open in my Canvas Networking course?"

輸入參數course_id必填

get_calendar_events

Calendar events

Canvas calendar events and assignment due dates. Pass start_date and end_date as YYYY-MM-DD to limit the range. Example: "What is on my Canvas calendar between 2026-10-01 and 2026-10-31?"

輸入參數end_datestart_date

get_target_grade

Target grade

Work out what score is needed on the remaining Canvas work in one course to reach a target percent. Pass course_id as the Canvas course ID or as the course name and target_percent as a number from 0 to 100. If Canvas reports a current percent for that course, pass current_percent to use it instead of computing from graded points alone. Example: "What do I need on the rest of my work in Networking 1 to get an 85 percent?"

輸入參數course_id必填target_percent必填current_percent

get_assignment_files

Assignment files

List the files linked in one Canvas assignment's instructions, such as a handout or a rubric, with the file name, type, size and a link. Pass course_id as the Canvas course ID or as the course name and assignment as the assignment ID or its name. It does not download or open the files. Example: "What files come with the Lab 4 assignment in Networking 1?"

輸入參數course_id必填assignment必填

get_submission_feedback

Submission feedback

The instructor's comments on your graded submission for one Canvas assignment, with the score and grade. Pass course_id as the Canvas course ID or as the course name and assignment as the assignment ID or its name. Example: "What did the teacher say about my Lab 4 submission in Networking 1?"

輸入參數course_id必填assignment必填

export_due_dates_calendar

Export due dates calendar

Build an iCalendar (.ics) file of Canvas due dates and calendar events that opens in Google Calendar, Apple Calendar and Outlook. Give a folder in path and the file is saved there, or leave path out and the calendar text comes back so you can save it yourself. Each event carries the course name, the points, the submission status and a link back to Canvas, plus a reminder the day before. By default only work you still owe is in the file, set include_submitted to add the work you already handed in. Use days_ahead to change how far ahead to look, 30 days by default, or course_id as the Canvas course ID or as the course name for one course. Example: "Put my Canvas due dates in Google Calendar."

輸入參數pathfilenamecourse_iddays_aheadinclude_submitted

版本歷史

10
  1. v0.1.10最新Nov 1, 2026
  2. v0.1.9Oct 30, 2026
  3. v0.1.8Oct 29, 2026
  4. v0.1.7Oct 26, 2026
  5. v0.1.6Oct 25, 2026
  6. v0.1.5Oct 23, 2026
  7. v0.1.4Oct 21, 2026
  8. v0.1.3Oct 20, 2026
  9. v0.1.1Oct 16, 2026
  10. v0.1.0Oct 14, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分