# canvas-mcp

Connects Claude Code to Canvas LMS for course data, assignments, grades, and content. It serves both student and educator workflows through MCP tools.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 307
- Author: vishalsachdev
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/vishalsachdev/canvas-mcp
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/canvas-mcp

## What it does

canvas-mcp connects an agent to Canvas LMS through MCP. Its tools cover courses, assignments, due dates, grades, groups, announcements, calendars, pages, modules, files, and discussions. Educators can also create or update assignments, inspect submissions, post announcements, and manage course content. The server provides up to 128 tools, with 8 optional agent skills for multi-step workflows.

For Claude Code, add the server with `claude mcp add canvas-mcp -- uvx canvas-mcp`. Canvas access requires your Canvas URL and an API token, and the connection can be checked with `canvas-mcp-server --test`. Without those credentials, the server cannot connect to Canvas. The active profile controls the available tools, while extra feature-gated tools can expand the total.

## Requirements
- Needs: Python and uv (commands run via uvx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add canvas-mcp -- uvx canvas-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from canvas-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add canvas-mcp -- uvx canvas-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from canvas-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "canvas-mcp": {
            "command": "uvx",
            "args": [
                "canvas-mcp"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from canvas-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "canvas-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "canvas-mcp"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from canvas-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add canvas-mcp uvx canvas-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from canvas-mcp <command>

## When to use it
- check upcoming assignment deadlines
- find missing submissions and review current grades
- create or change a course assignment
- update course pages and modules
- send an announcement to students

## Example prompts
- Use `get_my_upcoming_assignments` to show my upcoming deadlines.
- Find the assignments I have not submitted and compare them with my current grades.
- Create a course assignment with an online text submission and the due date I provide.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
