👨‍🏫 Educator Guide

Canvas MCP for Educators

AI-powered course management with FERPA-compliant data handling. 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 — 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 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

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 compliance)
ENABLE_DATA_ANONYMIZATION=true
ANONYMIZATION_DEBUG=false
⚠️ Important

Set ENABLE_DATA_ANONYMIZATION=true for FERPA-compliant student data handling. This anonymizes student names before AI processing.

4. Connect Your MCP Client

Add Canvas MCP to your client's MCP config. The entry is the same for every client — only the file it goes in changes:

{
  "mcpServers": {
    "canvas-api": {
      "command": "/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}

Where that file lives for Claude Desktop, Cursor, Zed, Windsurf, Continue and others is listed in the client configuration guide. 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 Compliance & Privacy

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. Filters PII from 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 processing only - All data stays on your machine
  • Review before sharing - Ensure student data is anonymous 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_reminders - Automated reminder workflow
  • 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 for 99.7% token savings:

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!