Canvas MCP logo

Canvas MCP

by admin978

Connects local MCP clients to Canvas LMS for courses, assignments, grades, planning, and content retrieval.

Install Canvas MCP

Pick your client, then add it in one click or paste the config.

STDIOPython
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "admin978-canvas-mcp": {
      "command": "uvx",
      "args": [
        "canvas-local-mcp"
      ],
      "env": {
        "CANVAS_BASE_URL": "YOUR_VALUE_HERE",
        "CANVAS_TOKEN": "YOUR_VALUE_HERE",
        "CANVAS_DUMP_DIR": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

uvx canvas-local-mcp

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 1mo ago.

Overview

The admin978/canvas-mcp MCP server connects local MCP clients to Canvas LMS through the Canvas REST API. It runs over stdio and reads the institution URL and personal access token from ~/.canvas.env, keeping requests in the local client-to-Canvas path without a third-party token broker. Tools retrieve courses, assignments, modules, announcements, pages, file metadata, grades, planner items, upcoming events, and todo items. Reach for it when you want Canvas data available in Claude Desktop or another MCP-compatible workflow, particularly across multiple courses.

Use cases

  • List assignments across active Canvas courses
  • Review current grades by course
  • Track planner items and upcoming events
  • Fetch Canvas modules, announcements, and pages
  • Dump course files for offline indexing

Key features

  • Local stdio MCP transport
  • Canvas REST API access
  • Course and assignment retrieval
  • Grades, planner, events, and todo tools
  • Module, announcement, page, and file access
  • Bulk course content dump utility

Tools10

What Canvas MCP lets your agent do. Expand a tool for its parameters.

Self-reported~30 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

18/18 checks healthy over the last 78d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 8d ago via OSV.dev · canvas-local-mcp (PyPI)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars4Stargazers on the source repository.
Last commit3mo agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Tools exposed10Callable tools this server registers over MCP.
Directory activity4 viewsConfig copies, upvotes, and views on AllMCPs.

How Canvas MCP works

What admin978/canvas-mcp MCP server does

The admin978/canvas-mcp MCP server exposes selected Canvas LMS data through MCP tools for local AI workflows. It is aimed at students, instructors, and developers who need conversational access to course information without manually browsing each Canvas page.

The available tools cover course discovery, assignments, modules, announcements, pages, file information, grades, planner items, upcoming events, and todo items. Typical requests include finding assignments due across active courses, reviewing current grades, listing next week's events, or fetching a page such as a course syllabus. The listed interface is retrieval-oriented: the provided tools list and fetch Canvas data rather than create or update Canvas records.

A separate command-line utility, canvas-local-mcp-dump, downloads course files and related content for offline indexing. It can target all active courses or receive specific course IDs, with output written to ./canvas-dump/ by default.

How it works

The admin978/canvas-mcp MCP server runs locally and communicates with its MCP client using stdio. When a tool is invoked, the local process sends requests to the official Canvas API endpoints configured for the user’s institution. No external token broker is used in that request path.

Authentication uses a Canvas personal access token. Canvas users create this token under Account, Settings, Approved Integrations, and New Access Token. The server reads the token and the institution’s Canvas base URL from ~/.canvas.env; the base URL should identify the institution root and omit /api/v1.

The project describes itself as alpha software for single-user use. Its API surface may change, so deployments should account for possible revisions.

Setup and configuration

Python 3.10 or newer is required. The package is published on PyPI as canvas-local-mcp, and it can also be installed from a cloned source checkout with an editable install. After installation, create ~/.canvas.env, restrict its permissions, set CANVAS_BASE_URL, and add the Canvas token as CANVAS_TOKEN.

Register the executable as an MCP server in the client configuration. For Claude Desktop, the stdio entry uses the canvas-local-mcp command. Claude Code can register the same executable with claude mcp add canvas-local -- canvas-local-mcp.

The dump utility accepts optional course IDs. Its destination can be changed with CANVAS_DUMP_DIR. Token handling guidance in the project covers file permissions, least privilege, rotation, revocation, and vulnerability reporting.

Tools and capabilities

The admin978/canvas-mcp MCP server provides these tools:

  • list_courses for course listings
  • list_assignments for assignment retrieval
  • list_modules for module data, including module items in the documented example
  • list_announcements for course announcements
  • get_page for fetching a page from a course
  • get_file_info for file metadata
  • get_grades for current grade information
  • planner_items for planner data
  • upcoming_events for forthcoming Canvas events
  • todo for todo items

The companion dump command supports bulk download of course files and related content for offline indexing, but it is separate from the MCP tool list.

Limitations and notes

The repository labels the project alpha and provides no warranty. It is designed for a single user, and the API surface can still change. The server is local-first and uses stdio rather than a remote MCP endpoint.

It also says the server works with other MCP-compatible clients, but it does not provide client-specific configuration for each one. Tests use a mocked Canvas API and do not require a token, which describes development testing rather than production authentication.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Canvas MCP

Install the PyPI package with `pip install canvas-local-mcp`, or install it from a cloned source checkout with `pip install -e .`.

Yes. The README provides Claude Desktop configuration using the `canvas-local-mcp` stdio command.

Set `CANVAS_BASE_URL` to the institution root without `/api/v1` and `CANVAS_TOKEN` to a Canvas personal access token. `CANVAS_DUMP_DIR` optionally changes the bulk dump destination.

Its MCP tools cover courses, assignments, modules, announcements, pages, file information, grades, planner items, upcoming events, and todo items.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewCanvas MCP AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/admin978-canvas-mcp?style=directory)](https://allmcps.com/mcp/admin978-canvas-mcp)
HTML Embed
<a href="https://allmcps.com/mcp/admin978-canvas-mcp"><img src="https://allmcps.com/api/badge/admin978-canvas-mcp?style=directory" alt="Canvas MCP on AllMCPs" /></a>