canvas-lms
by vishalsachdevv1.1.0
Canvas LMS integration — manage pages, assignments, modules, discussions, grades, and more via the Canvas REST API
Keywords
canvaslmseducationteachingmcp
Commands
canvas-statusCheck 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