Skip to main content
vishalsachdev

canvas-lms

by vishalsachdevv1.1.0

Canvas LMS integration — manage pages, assignments, modules, discussions, grades, and more via the Canvas REST API

Installation guide →
1 skillMIT GitHub

Keywords

canvaslmseducationteachingmcp

Commands

canvas-status

Check Canvas LMS connection status and course info

Documentation

# Canvas LMS Plugin for Claude Code & Cowork

A Claude plugin that provides full Canvas LMS integration — manage pages, assignments, modules, discussions, grades, rubrics, and more through natural language.

## Prerequisites

Install the Canvas MCP server:

```bash
pip install canvas-mcp
```

## Setup

### 1. Get a Canvas API Token

1. Log into your Canvas instance
2. Go to **Account > Settings**
3. Scroll to **Approved Integrations** and click **+ New Access Token**
4. Give it a name (e.g., "Claude Code") and generate
5. Copy the token — you won't see it again

### 2. Set Environment Variables

```bash
export CANVAS_API_TOKEN="your-token-here"
export CANVAS_API_URL="https://your-institution.instructure.com/api/v1"
```

Or add them to your shell profile (`~/.zshrc`, `~/.bashrc`).

### 3. Install the Plugin

**Claude Code (CLI):**
```bash
claude plugin install ./canvas-lms-plugin
```

**Cowork:**
Upload the plugin directory through Customize > Browse plugins > Upload.

### 4. Verify Connection

Use the `/canvas:status` command to verify your connection:

```
/canvas:status
```

Or with a specific course:

```
/canvas:status 12345
```

## What's Included

### MCP Server (~60 Canvas API tools)

Full Canvas REST API coverage:

| Category | Tools |
|----------|-------|
| **Pages** | Create, edit, get, list, delete pages |
| **Assignments** | Create, update, get details, list, grade |
| **Modules** | Create, update, list, add/remove items |
| **Discussions** | Create topics, post entries, list |
| **Files** | Upload, download, list course files |
| **Rubrics** | Create, update, associate with assignments |
| **Grades** | View submissions, bulk grade |
| **Users** | List students, groups, analytics |
| **Messaging** | Send conversations, announcements |
| **Peer Review** | Assign, track, analyze reviews |

### Command

- **`/canvas:status`** — Verify API connection and list accessible courses

### Skill

- **`canvas-builder`** — Generate Canvas-ready HTML with proper structure, accessibility, and inline styling

## Example Usage

```
"Create a new page in course 12345 called 'Week 3 Overview' with a header,
learning objectives, and a schedule table for Tuesday/Thursday classes"

"Create an assignment called 'Case Analysis 1' worth 20 points,
due March 1st at midnight Central time, accepting file uploads"

"List all modules in course 12345 and show me what's in Module 3"

"Upload slides.pdf to the Week 3 folder in course 12345"
```

## Configuration

All configuration is via environment variables:

| Variable | Required | Description |
|----------|----------|-------------|
| `CANVAS_API_TOKEN` | Yes | Your Canvas API access token |
| `CANVAS_API_URL` | Yes | Your institution's Canvas API URL (e.g., `https://canvas.instructure.com/api/v1`) |
| `MCP_SERVER_NAME` | No | Server display name (default: `canvas-api`) |
| `ENABLE_DATA_ANONYMIZATION` | No | Anonymize student data (default: `true`) |
| `API_TIMEOUT` | No | API request timeout in seconds (default: `30`) |

See the full [env.template](https://github.com/vishalsachdev/canvas-mcp/blob/main/env.template) for all options.

## Links

- [Canvas MCP Server (GitHub)](https://github.com/vishalsachdev/canvas-mcp)
- [Canvas MCP on PyPI](https://pypi.org/project/canvas-mcp/)
- [Canvas API Documentation](https://canvas.instructure.com/doc/api/)

## License

MIT