Canvas MCP logo

Canvas MCP

Connects AI assistants to Canvas LMS for course data, content management, grading, messaging, and accessibility checks.

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": {
    "canvas-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "canvas-mcp",
        "canvas-mcp-server"
      ],
      "env": {
        "ALLOWED_WRITE_TOOLS": "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 --from canvas-mcp canvas-mcp-server

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 4d ago.

Overview

The canvas-mcp MCP server connects MCP-compatible AI clients to Canvas LMS through role-specific tools for students, educators, learning designers, and developers. It supports course queries, assignments, submissions, grades, discussions, pages, modules, files, accessibility checks, and selected write operations. Install it through the Claude Desktop extension or run its local server binary in another supported client, then verify the Canvas connection. Reach for it when an assistant needs to inspect or manage Canvas content, perform supported bulk tasks, or review course accessibility.

Use cases

  • Check upcoming assignments and missing submissions
  • Manage course assignments, modules, and pages
  • Grade multiple submissions in bulk
  • Audit course content for accessibility issues
  • Review Canvas course structure and discussions

Key features

  • Canvas LMS student and educator tools
  • Assignment, module, page, and file management
  • Bulk grading and TypeScript execution
  • Course accessibility and UFIXIT reporting
  • Discussion, messaging, and announcement tools
  • Role-specific agent workflow skills

Security & health

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

ActiveLast checked Today

Recent health check succeeded.

5/5 checks healthy over the last 44d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

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

Adoption & maintenance

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

GitHub stars304Stargazers on the source repository.
Last commitTodayMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Directory activity5 viewsConfig copies, upvotes, and views on AllMCPs.

How Canvas MCP works

What canvas-mcp does

The canvas-mcp MCP server exposes Canvas LMS operations to MCP-compatible AI assistants. Its tools cover several user types rather than one narrow workflow. Students can inspect upcoming assignments, TODO items, submission status, grades, and peer-review tasks. Educators can manage assignments, submissions, announcements, messages, modules, pages, and course files. Shared read and discussion tools cover courses, syllabi, pages, modules, forums, posts, and replies.

Learning designers can retrieve a course structure and run accessibility-oriented checks. The accessibility scanner performs 20 checks involving areas such as headings, tables, links, contrast, alternative text, captions, and DesignPLUS. Related tools can retrieve, parse, and format an institutional UFIXIT report. Developer-oriented tools support tool discovery and local TypeScript execution for more complex bulk operations.

This project belongs to the 🎓 Education category and is suited to assistants used by students, instructors, course designers, or developers working with Canvas data.

How it works

The canvas-mcp MCP server communicates with Canvas through an MCP client. Course records can be identified by Canvas ID, course code, or SIS ID. A default profile registers fewer than the maximum available tool set; optional feature-gated tools can bring the total to up to 103. Eight agent skills provide multi-step recipes such as weekly planning, morning checks, bulk grading, peer review, and course quality control. Skills are added separately with the npx skills add vishalsachdev/canvas-mcp command.

Bulk work should match the operation to the tool: use regular MCP tools for simple queries, bulk_grade_submissions for grading groups of 10 or more, and execute_typescript for complex operations involving roughly 30 or more items. Canvas rate limits are approximately 700 requests per 10 minutes, and the documentation recommends max_concurrent=5 for bulk operations.

Setup and configuration

Claude Desktop users can download the canvas-mcp.mcpb file from the latest release and open it. The extension asks for the Canvas URL and access token without requiring terminal setup.

For Cursor, Zed, Windsurf, Continue, Claude Code, and other clients, install the package into a virtual environment with pip, place the Canvas token in .env, and configure the client to launch the canvas-mcp-server binary. Run canvas-mcp-server --test to check the Canvas connection, then restart the client.

The optional ALLOWED_WRITE_TOOLS setting controls write access for HTTP deployments. HTTP servers are read-only unless write tools are explicitly allowed; local stdio behavior is unchanged unless this setting is used. Code execution must be allowed separately. The latest release also requires a preview-and-confirm flow for send_conversation.

Tools and capabilities

Representative capabilities include:

  • Listing courses, assignments, pages, modules, discussions, and module items.
  • Reading course details, page content, discussion entries, grades, and submission status.
  • Creating or updating assignments, modules, pages, announcements, and discussion posts.
  • Uploading course files and performing selected bulk grading or page operations.
  • Auditing course content for accessibility and processing UFIXIT reports.
  • Discovering available tools and running local TypeScript for custom bulk logic.

Limitations and notes

The server cannot create or delete courses, modify course settings, or access other users’ data. Available tools depend on the selected profile, feature gates, client, user permissions, and write-tool configuration. HTTP deployments require explicit write permissions for mutating operations. Local file exports reject HTTP callers unless configured to return content in the response. Rubric grading stops when grading settings cannot be verified, so the Canvas state should be checked before retrying.

Reviews

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

Frequently Asked Questions about Canvas MCP

canvas-mcp is an MCP server that connects AI assistants to Canvas LMS. Its main tools read courses, assignments, pages, modules, discussions, grades, and submissions, while selected tools create or update content, send messages, upload files, run accessibility checks, and support bulk grading.

Install it through the Claude Desktop extension or with pip in a virtual environment for other clients. Claude Desktop users open the downloaded .mcpb release file; other clients launch the canvas-mcp-server binary after configuring the Canvas token.

Run `canvas-mcp-server --test` to verify the Canvas connection. After a successful result, restart the MCP client so it can load the server and its configured tools.

Yes, canvas-mcp works with Cursor when installed locally and configured to launch the `canvas-mcp-server` binary. The setup also requires placing the Canvas token in `.env`.

Set `ALLOWED_WRITE_TOOLS` for an HTTP deployment to allow the write operations it needs, or set it to `all`. HTTP servers are read-only by default, and code execution must be named separately.

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/canvas-mcp?style=directory)](https://allmcps.com/mcp/canvas-mcp)
HTML Embed
<a href="https://allmcps.com/mcp/canvas-mcp"><img src="https://allmcps.com/api/badge/canvas-mcp?style=directory" alt="Canvas MCP on AllMCPs" /></a>