👨‍🏫 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
  • Claude Desktop - Download from claude.ai
  • 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 "Claude 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. Configure Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

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

5. Test and Start

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

Restart Claude Desktop 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_details - View rubric criteria
  • associate_rubric - Link rubric to assignment
  • grade_submission_with_rubric - Grade using rubric
  • bulk_grade_submissions - Batch grading (10+ at once)

Student Analytics

  • get_student_analytics - Multi-dimensional performance analysis
  • identify_at_risk_students - Flag students needing support
  • 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!