What Can Canvas MCP Do for You?
Canvas MCP provides AI-powered tools for learning designers who build, audit, and maintain Canvas courses:
🏗️ Course Scaffolding
Build complete course structures from specs, templates, or by cloning existing courses. Create modules, pages, assignments, and discussions in bulk.
✅ Quality Assurance
Pre-semester audits that check module structure, content completeness, publishing state, date consistency, and naming conventions.
♿ Accessibility Compliance
Scan course content for WCAG violations, generate prioritized reports, guide remediation, and verify fixes.
📊 Course Structure Analysis
Get a full module-to-items tree as JSON in a single call. Understand course architecture at a glance.
📄 Page & Module Management
Create, edit, and organize pages and modules. Bulk update content across entire courses.
📋 Content Templates
Clone structures across courses, apply standard templates, and ensure consistency at scale.
Prerequisites
- Python 3.10+ installed on your computer
- An MCP client — whichever AI assistant you already use. Claude Desktop, Claude Code, ChatGPT, Cursor, VS Code, Zed, Windsurf and Continue all work; see supported clients.
- Canvas Account with designer or admin permissions
Installation
git clone https://github.com/vishalsachdev/canvas-mcp.git
cd canvas-mcp
# Create virtual environment
python3 -m venv .venv
. .venv/bin/activate
# Install
pip install -e .
Configure .env:
CANVAS_API_TOKEN=your_token_here
CANVAS_API_URL=https://canvas.youruniversity.edu
Add to your MCP client config — most clients read this exact entry and differ only in where the file lives:
{
"mcpServers": {
"canvas-api": {
"command": "/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
}
}
}
The client configuration guide lists where that file lives for Claude Desktop, Cursor, Zed, Windsurf, Continue and others — check it for your client, since some use their own schema (Zed nests the server under context_servers).
Available Tools
Course Structure
get_course_structure— Full module→items tree as JSON (one call)list_modules— List all modules in a courselist_module_items— Items within a specific moduleget_course_details— Course metadata and settings
Accessibility
scan_course_content_accessibility— Scan for WCAG violationsfetch_ufixit_report— Retrieve UFIXIT accessibility reportparse_ufixit_violations— Extract structured violations from reportformat_accessibility_summary— Format violations into readable report
Page Management
create_page— Create a new pageedit_page_content— Update page HTML contentlist_pages— List all pages in a courseget_page_content— Read page contentbulk_update_pages— Update multiple pages at once
Module Management
create_module— Create a new moduleadd_module_item— Add items to a moduleupdate_module— Modify module settingsupdate_module_item— Modify item settings
Assignment & Discussion Setup
create_assignment— Create assignments with due dates, points, and submission typescreate_discussion_topic— Create discussion forumscreate_rubric— Build grading rubricsassociate_rubric— Link rubrics to assignments
AI Skills (Automated Workflows)
Skills are pre-built workflows that combine multiple tools into complete processes. Install them into any of 40+ agents via skills.sh, or use them as slash commands in Claude Code.
✅ canvas-course-qc
Pre-semester quality audit. Checks structure, content, publishing state, date consistency, and completeness.
Try: "Run a QC check on CS 101"
♿ canvas-accessibility-auditor
WCAG compliance workflow. Scans content, generates prioritized reports, guides remediation.
Try: "Audit accessibility for BADM 350"
🏗️ canvas-course-builder
Scaffold complete course structures from specs, templates, or by cloning existing courses.
Try: "Build a 15-week structure for CS 102"
Installing Skills
# Interactive picker — installs into 40+ agents (Claude Code, Cursor, Codex, Zed, …)
npx skills add vishalsachdev/canvas-mcp
Example Workflows
📊 Course Structure Audit
Ask: "Show me the full structure of BADM 350"
🔧 Bulk Content Update
Ask: "Update all overview pages to include the new syllabus link"
♿ Accessibility Remediation
Ask: "Fix all accessibility issues in BADM 350"
Troubleshooting
"Permission denied" or "Unauthorized"
- Verify your Canvas account has designer or admin role in the course
- Check your API token has sufficient permissions
- Some institutions restrict API access — check with your Canvas admin
"Course not found"
- Use the course code (e.g., "BADM_350") or Canvas course ID
- Verify the course exists and you have access
Need More Help?
Open an issue on GitHub for additional support.
Ready to Streamline Course Design?
Install Canvas MCP and start building, auditing, and optimizing courses with AI assistance.