👨‍🏫 Educator Guide

Canvas MCP for Educators

AI-powered course management with optional privacy controls. Track submissions, grade efficiently, and communicate with students.

What Can Canvas MCP Do for You?

Canvas MCP provides AI-powered assistance for common teaching workflows:

📋 Assignment Management

Track submissions, identify missing work, analyze completion rates across your courses.

✏️ Grading & Rubrics

Manage rubrics, grade submissions efficiently, and provide structured feedback.

📊 Student Analytics

Monitor performance, identify at-risk students, track engagement trends.

👥 Peer Review Management

Track completion, analyze review quality, send automated reminders.

💬 Discussion Facilitation

Monitor discussions, respond to students, analyze participation.

📧 Communication

Send targeted messages, create announcements, automate reminders.

Prerequisites

  • Python 3.10+ installed on your computer
  • An MCP client — commonly used options include Claude Desktop, Claude Code, ChatGPT, Cursor, VS Code, Zed, Windsurf, and Continue; setup and capabilities vary, so see supported clients.
  • Canvas Account with instructor/TA permissions

Installation

1. Clone and Install

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 .

2. Get Your Canvas API Token

  1. Log in to your Canvas account
  2. Go to AccountSettings
  3. Scroll to Approved Integrations
  4. Click + New Access Token
  5. Name it "Canvas MCP / AI teaching assistant"
  6. Copy the token immediately
🏫 University of Illinois Urbana-Champaign

UIUC disables self-service token creation for everyone, instructors included — the + New Access Token button above will not work. Request one through the Canvas API Token Request form (NetID login). After approval, activate the token under Account → Settings → Approved Integrations, then retrieve its value from the U of I Box link Technology Services sends you.

Tokens issued from August 2026 expire after 30 days. Expiry is not monitored or announced, and expired tokens are removed without notice — request the replacement before the current one lapses, since approval needs a human. Details: Answers KB 150325 (Illinois login).

3. Configure Environment

cp env.template .env

Edit your .env file:

# Canvas API Configuration
CANVAS_API_TOKEN=your_token_here
CANVAS_API_URL=https://canvas.youruniversity.edu

# Privacy Settings (IMPORTANT for FERPA-conscious workflows)
ENABLE_DATA_ANONYMIZATION=true
ANONYMIZATION_DEBUG=false
⚠️ Important

Set ENABLE_DATA_ANONYMIZATION=true to reduce identity data in supported tool results before they reach the AI client. This can support FERPA-conscious workflows, but it does not by itself establish compliance.

4. Connect Your MCP Client

Add Canvas MCP to your client's MCP 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). Claude Desktop users can skip the JSON entirely and install the one-click extension instead.

5. Test and Start

canvas-mcp-server --test
canvas-mcp-server --config

Restart your client to activate the tools.

FERPA & Privacy Considerations

Canvas MCP provides technical privacy controls. Your institution remains responsible for approving the deployment, configuration, AI provider, access controls, retention, and operating practices required for compliance.

How Data Anonymization Works

When ENABLE_DATA_ANONYMIZATION=true is set, Canvas MCP automatically:

  1. Converts student names to anonymous IDs (e.g., "John Smith" → "Student_abc123")
  2. Masks email addresses (e.g., "john@university.edu" → "student_abc123@masked")
  3. Masks supported PII patterns in discussion posts and submissions
  4. Maintains consistency - same student always gets the same anonymous ID
  5. Preserves relationships - you can still identify patterns and trends

De-Anonymization Mapping

The system creates local mapping files for you to correlate anonymous IDs with real students:

local_maps/
└── course_BADM_350_mapping.csv

This CSV maps anonymous IDs back to real names - keep it secure and never commit to version control.

Privacy Best Practices

  • Enable anonymization - Always set ENABLE_DATA_ANONYMIZATION=true
  • Secure your token - Never share or commit your Canvas API token
  • Protect mapping files - Keep local_maps/ folder secure
  • Local server deployment - The server and credentials stay in your environment; tool results still pass to your configured AI client
  • Review before sharing - Check that expected identity fields are masked in shared conversations

How to Use Canvas MCP

Quick Start Prompts

Assignment Management

  • "Which students haven't submitted Assignment 3 in BADM 350?"
  • "Show me submission statistics for the latest assignment"
  • "List all assignments in my Spring 2025 courses"

Student Analytics

  • "Which students are falling behind in BADM 350?"
  • "Show me performance analytics for Assignment 5"
  • "Who needs academic support based on recent grades?"

Peer Review Management

  • "How many students completed their peer reviews for Assignment 2?"
  • "Show me peer review completion analytics"
  • "Analyze the quality of peer review comments"

Grading & Rubrics

  • "Show me the rubric for Assignment 4"
  • "List all rubrics for BADM 350"
  • "Create a rubric for the final project"

Communication

  • "Send a reminder to students who haven't completed peer reviews"
  • "Create an announcement about tomorrow's exam"
  • "Message students who are missing Assignment 3"

Available Educator Tools

Assignment Management

  • list_assignments - View all assignments for a course
  • get_assignment_details - Detailed assignment information
  • list_submissions - Student submission status
  • get_assignment_analytics - Performance and completion statistics

Grading & Rubrics

  • create_rubric - Create new rubrics
  • get_rubric - View rubric criteria, ratings, and points
  • associate_rubric - Link rubric to assignment
  • grade_with_rubric - Grade using rubric
  • bulk_grade_submissions - Batch grading (10+ at once)

Student Analytics

  • get_student_analytics - Per-student engagement scores, ranked so disengaged students surface first
  • get_assignment_analytics - Performance breakdown for a single assignment
  • get_peer_review_completion_analytics - Peer review tracking

Peer Review Management

  • list_peer_reviews - View peer review assignments
  • get_peer_review_comments - Extract review text and metadata
  • analyze_peer_review_quality - Quality metrics and analysis
  • identify_problematic_peer_reviews - Flag low-quality reviews

Communication & Messaging

  • send_conversation - Send messages to students
  • send_peer_review_inbox_messages - Direct Canvas Inbox messages about incomplete peer reviews
  • create_announcement - Post course announcements

Discussion Management

  • list_discussion_topics - View discussion forums
  • get_discussion_entry_details - Read student posts
  • reply_to_discussion_entry - Respond to students
  • create_discussion_topic - Start new discussions

Example Workflows

📋 Monday Morning Check-In

Ask: "Give me a status update on my courses"

1 List your active courses
2 Check recent assignment submissions
3 Identify missing work
4 Flag students needing attention

📅 After Assignment Due Date

Ask: "Assignment 3 was due Friday in BADM 350. Who hasn't submitted?"

1 Get submission statistics
2 List non-submitters (anonymized)
3 Suggest sending reminders

👥 Peer Review Management

Ask: "Check peer review completion for Assignment 2 in BADM 350"

1 Analyze completion rates
2 Identify incomplete reviews
3 Assess review quality
4 Suggest follow-up actions

Advanced Features

Automated Peer Review Follow-Up

Run a complete follow-up campaign:

Ask: "Run a peer review follow-up campaign for Assignment 2"

This will:
1. Analyze completion
2. Identify incomplete reviews
3. Send targeted reminders
4. Generate a report

Bulk Grading (Code Execution API)

For large-scale grading operations with custom logic, use the Code Execution API to keep per-submission processing out of the model's context:

await bulkGrade({
  courseIdentifier: "60366",
  assignmentId: "123",
  gradingFunction: (submission) => {
    // Custom grading logic
    return { points: 100, comment: "Great work!" };
  }
});
Learn More About Bulk Grading →

Troubleshooting

"Connection failed" or "Authentication error"

  • Check your Canvas API token in .env
  • Verify Canvas URL is correct
  • Ensure token has instructor permissions

"No students showing" or "empty results"

  • Verify you have instructor/TA role in the course
  • Check if students are enrolled
  • Ensure assignments have submissions enabled

Anonymization Not Working

  • Set ENABLE_DATA_ANONYMIZATION=true in .env
  • Restart Canvas MCP server
  • Check local_maps/ folder is created

Need More Help?

Open an issue on GitHub for additional support.

Ready to Enhance Your Teaching?

Follow the installation guide and start using AI-powered course management today!