Educator Guide - Canvas MCP
Description: Learn how to use Canvas MCP as an educator for FERPA-compliant course management, grading, analytics, and student communication.

## 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 Account → Settings
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!

Quick Start Guide Learn Bulk Grading