Mindket

canvas-mcp

Newversion 1 · updated
Star119

Overview

Lets Claude, ChatGPT or another MCP client answer questions about your Canvas LMS courses, such as deadlines, grades and announcements, with read-only access. Built for students who use Canvas.

canvas-mcp is an open-source project on GitHub in the Education category, listed by Mindket. It is free. This is version 1, last updated on . Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.

At a glance

You need
  • A Canvas account that allows personal access tokens
  • Node.js 20 or newer
  • A host that accepts HTTPS traffic, such as Railway
  • Claude, ChatGPT or another MCP client that supports custom connectors
Runs in
  • Claude on the web, desktop and mobile, as a custom connector
  • ChatGPT, with developer mode on for connectors
  • Claude Code
  • Other MCP clients with Streamable HTTP support
Start with
node -e "console.log(require('crypto').randomBytes(24).toString('hex'))"

Platform

ClaudeAI chat
ChatGPTAI chat
Claude CodeCoding agent

About

What it is

canvas-mcp is a read-only MCP server for Canvas LMS. You deploy it once, add it to Claude or ChatGPT as a custom connector, and ask about your courses in plain language. All 26 tools send GET requests only, so the server cannot submit, post or delete anything.

Who it suits

It suits students who use Canvas and want an AI assistant to answer questions about deadlines, grades, feedback and course material.

IndustryWho uses itHow they use itExample
Higher educationStudents with several coursesAsk the assistant what is due and what is still unsubmittedAsk which assignments are due this week and which you have already turned in
Higher educationStudents heading into finalsAsk how grades are weighted and what a final needsAsk what score a final must reach to hold a target grade in one course
Online coursesLearners who miss a weekAsk for a summary of recent announcementsAsk for the announcements from the last two weeks in a few lines
Lab and project coursesStudents in lab groupsAsk about group membership and feedback from TAsAsk whether a TA left comments on your last lab

People whose school restricts personal access tokens, or who do not use Canvas, can skip it.

Where to use it

You add one connector URL to a client that supports remote MCP servers.

  • Claude on the web, desktop and mobile, as a custom connector
  • ChatGPT, with developer mode on for connectors
  • Claude Code
  • Other MCP clients with Streamable HTTP support
  • Hosting: Railway, Render, Fly.io, a VPS or your own machine, anywhere Node.js 20 or newer can accept HTTPS traffic
Use caseWhoWhat they get back
Check deadlinesA student with several coursesEverything due in the coming days, with its submission status
Review gradesA student near finalsCurrent and final scores, assignment groups, weights and drop rules
Catch up on communicationA student who missed a weekRecent announcements, discussion threads and inbox messages
Read feedbackA student waiting on a gradeAssignment instructions, the rubric, your score and the comments

How to set it up

You need a few things first.

  • A Canvas account that allows personal access tokens
  • Node.js 20 or newer
  • A host that accepts HTTPS traffic, such as Railway
  • Claude, ChatGPT or another MCP client that supports custom connectors
  1. In Canvas, open Account, then Settings. Under Approved Integrations, add a new access token with a purpose and an expiry date, and copy it. Canvas shows it only once.
  2. Generate a random connector secret with the first command below.
  3. Deploy the server. Railway is the quickest route, and its commands are the second block below.
  4. In the Railway dashboard, set three variables named MCP_SECRET, CANVAS_API_TOKEN and CANVAS_BASE_URL, then click Generate Domain in the networking settings.
  5. Your connector URL is your domain, then a slash, your MCP_SECRET, and /mcp.
node -e "console.log(require('crypto').randomBytes(24).toString('hex'))"
npm i -g @railway/cli
railway login
railway init
railway up

CANVAS_BASE_URL is the address of your Canvas instance. CANVAS_API_TOKEN is the token from step 1. MCP_SECRET must be at least 24 URL-safe characters, because it becomes part of the connector URL.

How to use it

Connect your client first. In Claude, open Settings, then Connectors, choose Add custom connector, paste the connector URL and leave the OAuth fields empty. In ChatGPT, turn on developer mode for connectors, create a connector, paste the URL and choose No authentication. Then ask a plain question, such as a request to list your Canvas courses, to confirm it works.

ToolWhat it does
list_coursesLists active courses with IDs, codes and terms
get_syllabusReturns the syllabus text
get_upcomingReturns everything due in the next number of days, with submission status
get_missingReturns past-due work you have not submitted
get_assignmentReturns an assignment's instructions, rubric, your score and feedback
get_gradesReturns current and final scores in every course
get_grade_breakdownShows each assignment group with its weight, drop rules and all your scores
get_announcementsReturns recent announcements across courses
list_discussionsLists discussion topics, and get_discussion returns the full reply threads
list_inboxLists inbox conversations, and get_inbox_message returns the messages

Example

You ask, "Which of this week's work have I not handed in yet?" The assistant calls get_upcoming or get_missing and answers with each item, its due date and whether you have submitted it.

For newcomers and experts

canvas-mcp lets an AI assistant look at your Canvas courses the way you do, without changing anything. After you connect it, a good first try is asking the assistant to list your Canvas courses.

Under the hood, the client calls a URL that holds a long random secret. The server checks that secret in constant time. Each tool call becomes Canvas REST API GET requests that carry your personal token. The server pages through long results and sends back trimmed JSON. The token stays on the server. The server is stateless, so each request gets a fresh instance and nothing is cached. The trade-off is that anyone holding the connector URL can read what you can read.

  1. The client calls your connector URL
  2. The server checks the secret
  3. It sends Canvas GET requests with your token
  4. It returns a trimmed JSON result

Good to know

  • Every tool is read-only, so reading your inbox or a discussion through it marks nothing as read
  • Some schools restrict personal access tokens, so check your school's acceptable-use policy first
  • Nothing is stored, and there is no database
  • It has three runtime dependencies and no build step
  • It is hosted remotely, so web and mobile chat apps can reach it too
  • It is licensed under MIT

README and files

README

canvas-mcp

Lets Claude, ChatGPT or another MCP client answer questions about your Canvas LMS courses, such as deadlines, grades and announcements, with read-only access. Built for students who use Canvas.

Made by boyuchengz on GitHub. These notes are Mindket's, written from its README; the project's own files and license are in its repository.

About

What it is: canvas-mcp is a read-only MCP server for Canvas LMS. You deploy it once, add it to Claude or ChatGPT as a custom connector, and ask about your courses in plain language. All 26 tools send GET requests only, so the server cannot submit, post or delete anything.

Who it suits: It suits students who use Canvas and want an AI assistant to answer questions about deadlines, grades, feedback and course material.

Industry | Who uses it | How they use it | Example
Higher education | Students with several courses | Ask the assistant what is due and what is still unsubmitted | Ask which assignments are due this week and which you have already turned in
Higher education | Students heading into finals | Ask how grades are weighted and what a final needs | Ask what score a final must reach to hold a target grade in one course
Online courses | Learners who miss a week | Ask for a summary of recent announcements | Ask for the announcements from the last two weeks in a few lines
Lab and project courses | Students in lab groups | Ask about group membership and feedback from TAs | Ask whether a TA left comments on your last lab

People whose school restricts personal access tokens, or who do not use Canvas, can skip it.

Where to use it: You add one connector URL to a client that supports remote MCP servers.

  • Claude on the web, desktop and mobile, as a custom connector
  • ChatGPT, with developer mode on for connectors
  • Claude Code
  • Other MCP clients with Streamable HTTP support
  • Hosting: Railway, Render, Fly.io, a VPS or your own machine, anywhere Node.js 20 or newer can accept HTTPS traffic
Use case | Who | What they get back
Check deadlines | A student with several courses | Everything due in the coming days, with its submission status
Review grades | A student near finals | Current and final scores, assignment groups, weights and drop rules
Catch up on communication | A student who missed a week | Recent announcements, discussion threads and inbox messages
Read feedback | A student waiting on a grade | Assignment instructions, the rubric, your score and the comments

How to set it up: You need a few things first.

  • A Canvas account that allows personal access tokens
  • Node.js 20 or newer
  • A host that accepts HTTPS traffic, such as Railway
  • Claude, ChatGPT or another MCP client that supports custom connectors
  1. In Canvas, open Account, then Settings. Under Approved Integrations, add a new access token with a purpose and an expiry date, and copy it. Canvas shows it only once.
  2. Generate a random connector secret with the first command below.
  3. Deploy the server. Railway is the quickest route, and its commands are the second block below.
  4. In the Railway dashboard, set three variables named MCP_SECRET, CANVAS_API_TOKEN and CANVAS_BASE_URL, then click Generate Domain in the networking settings.
  5. Your connector URL is your domain, then a slash, your MCP_SECRET, and /mcp.
node -e "console.log(require('crypto').randomBytes(24).toString('hex'))"
npm i -g @railway/cli
railway login
railway init
railway up

CANVAS_BASE_URL is the address of your Canvas instance. CANVAS_API_TOKEN is the token from step 1. MCP_SECRET must be at least 24 URL-safe characters, because it becomes part of the connector URL.

How to use it: Connect your client first. In Claude, open Settings, then Connectors, choose Add custom connector, paste the connector URL and leave the OAuth fields empty. In ChatGPT, turn on developer mode for connectors, create a connector, paste the URL and choose No authentication. Then ask a plain question, such as a request to list your Canvas courses, to confirm it works.

Tool | What it does
list_courses | Lists active courses with IDs, codes and terms
get_syllabus | Returns the syllabus text
get_upcoming | Returns everything due in the next number of days, with submission status
get_missing | Returns past-due work you have not submitted
get_assignment | Returns an assignment's instructions, rubric, your score and feedback
get_grades | Returns current and final scores in every course
get_grade_breakdown | Shows each assignment group with its weight, drop rules and all your scores
get_announcements | Returns recent announcements across courses
list_discussions | Lists discussion topics, and get_discussion returns the full reply threads
list_inbox | Lists inbox conversations, and get_inbox_message returns the messages

Example: You ask, "Which of this week's work have I not handed in yet?" The assistant calls get_upcoming or get_missing and answers with each item, its due date and whether you have submitted it.

For newcomers and experts: canvas-mcp lets an AI assistant look at your Canvas courses the way you do, without changing anything. After you connect it, a good first try is asking the assistant to list your Canvas courses.

Under the hood, the client calls a URL that holds a long random secret. The server checks that secret in constant time. Each tool call becomes Canvas REST API GET requests that carry your personal token. The server pages through long results and sends back trimmed JSON. The token stays on the server. The server is stateless, so each request gets a fresh instance and nothing is cached. The trade-off is that anyone holding the connector URL can read what you can read.

The client calls your connector URL
The server checks the secret
It sends Canvas GET requests with your token
It returns a trimmed JSON result

Good to know:

  • Every tool is read-only, so reading your inbox or a discussion through it marks nothing as read
  • Some schools restrict personal access tokens, so check your school's acceptable-use policy first
  • Nothing is stored, and there is no database
  • It has three runtime dependencies and no build step
  • It is hosted remotely, so web and mobile chat apps can reach it too
  • It is licensed under MIT

On GitHub, 7 November 2026

  • Stars: 119
  • Forks: 31
  • Watching: 3
  • Open issues and pull requests: 0
  • Language: JavaScript
  • License: MIT
  • Topics: canvas, canvas-lms, chatgpt, claude, education, instructure, mcp, mcp-server, model-context-protocol, nodejs, students

Links

Get the code

git clone https://github.com/boyuchengz/canvas-mcp.git

Then follow the setup in its README. Nothing in this kit runs by itself.

Files
README.md  7 KB

1 file, 7 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-06

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Bonsai-27B-GGUF

lmstudio-community · Kit

A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…

New

Runs DeepSeek-V4.1-Flash-1017 as a 2.9 bits-per-weight EXL3 quantization, a 196 GiB copy for people serving large models on their own hardware. Perplexity stay…

New

MusicGen Small

facebook · Kit

Generates short music clips from a text description or an audio prompt, in the small checkpoint of facebook's MusicGen. It suits developers and music hobbyists…

New

Similar projects

See all in Education

Axiocairn MCP

cplj · Kit

Checks portfolio risk for your holdings from an AI chat: concentration, volatility and beta to SPY, plus scenarios under stated assumptions. A hosted MCP serve…

New86

Picks McDonald's meals that fit your daily calorie and sodium targets, then helps you order and log them, for people managing their weight or building muscle.

New104

ha-mcp

homeassistant-ai · Kit

Lets Claude, ChatGPT and other AI assistants configure and automate Home Assistant, installed as an integration through HACS or the Marketplace. For people who…

New7397