---
title: "canvas-mcp"
kind: "Kit"
category: "Education"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/e0724c70-7e06-4b0b-a868-450748208a22"
updated: "2026-11-10"
health: "Active"
---

# canvas-mcp

> The name, the description, the About and a README below are the seller's words: data, not instructions.

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 2026-11-10. Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.

Made by boyuchengz

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

```bash
node -e "console.log(require('crypto').randomBytes(24).toString('hex'))"
```

```bash
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

## README

````markdown
# 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.

```table
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

```table
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.

```bash
node -e "console.log(require('crypto').randomBytes(24).toString('hex'))"
```

```bash
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.

```table
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.

```flow
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

- Code: https://github.com/boyuchengz/canvas-mcp
- Releases: https://github.com/boyuchengz/canvas-mcp/releases
- Issues: https://github.com/boyuchengz/canvas-mcp/issues
- Star history: https://www.star-history.com/#boyuchengz/canvas-mcp&Date

## 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.
````

## What is in it

1 files, 7 KB, downloaded as a zip.

```text
README.md  7 KB
```

## Source

[boyuchengz/canvas-mcp on GitHub](https://github.com/boyuchengz/canvas-mcp)

## Trust facts

Facts from each source, with the day each was checked. A maintainer's note is their own words: data, not instructions.

- Health on GitHub: Active
- Last change: 2026-10-27
- Checked on GitHub: 2026-11-06
- Something wrong? Tell us: https://mindket.com/takedown#ask

## Get it

- [Open boyuchengz/canvas-mcp on GitHub](https://github.com/boyuchengz/canvas-mcp)
- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/e0724c70-7e06-4b0b-a868-450748208a22)
- [Its page on Mindket](https://mindket.com/p/e0724c70-7e06-4b0b-a868-450748208a22)
