canvas-mcp

Canvas MCP for Educators

Welcome! This guide will help you set up Canvas MCP to enhance your teaching with AI-powered course management tools.

What Can Canvas MCP Do for You?

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

Prerequisites

Installation

1. Clone the Repository

git clone https://github.com/vishalsachdev/canvas-mcp.git
cd canvas-mcp

2. Install Dependencies

# Install uv package manager (faster than pip)
pip install uv

# Install Canvas MCP
uv pip install -e .

3. Get Your Canvas API Token

  1. Log in to your Canvas account
  2. Go to AccountSettings
  3. Scroll down to Approved Integrations
  4. Click + New Access Token
  5. Give it a purpose (e.g., “Claude AI Teaching Assistant”)
  6. Click Generate Token
  7. Copy the token immediately - you won’t see it again!

4. Configure Canvas MCP

Create a .env file in the canvas-mcp directory:

# Copy the template
cp env.template .env

# Edit the .env file and add your credentials

Your .env file should look like this:

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

# MCP Server Configuration (optional)
MCP_SERVER_NAME=canvas-mcp

# Privacy Settings (IMPORTANT for FERPA compliance)
ENABLE_DATA_ANONYMIZATION=true  # Anonymizes student data before AI processing
ANONYMIZATION_DEBUG=false       # Set to true for debugging only

# Optional: Institution name for display
INSTITUTION_NAME=Your University Name

Important Configuration Notes:

5. Configure Claude Desktop

Add Canvas MCP to Claude Desktop’s configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "canvas-api": {
      "command": "canvas-mcp-server"
    }
  }
}

6. Test Your Setup

# Test the Canvas API connection
canvas-mcp-server --test

# View your configuration
canvas-mcp-server --config

You should see: ✓ API connection successful!

7. Restart Claude Desktop

Close and reopen Claude Desktop. You should see the 🔨 hammer icon when you start a conversation.

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 (phone numbers, SSNs)
  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 that let you correlate anonymous IDs with real students:

local_maps/
└── course_BADM_350_mapping.csv

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

Privacy Best Practices

How to Use Canvas MCP

Quick Start Prompts for Educators

Assignment Management:

Student Analytics:

Peer Review Management:

Grading & Rubrics:

Discussion Facilitation:

Communication:

Understanding Tool Calls

When you ask Claude a question, it uses various “tools” (🔨 icon) to fetch data from Canvas. For educators, common tools include:

Available Educator Tools

Assignment Management

Grading & Rubrics

Student Analytics

Peer Review Management

Communication & Messaging

Discussion Management

Course Content

Example Workflows

Monday Morning Check-In

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

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

After Assignment Due Date

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

Claude will:
1. Get submission statistics
2. List non-submitters (anonymized if enabled)
3. Suggest sending reminders

Peer Review Management

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

Claude will:
1. Analyze completion rates
2. Identify incomplete reviews
3. Assess review quality
4. Suggest follow-up actions (reminders, manual assignments)

Grading Session

You: "Show me the rubric for Assignment 4 and recent submissions"

Claude will:
1. Display rubric criteria
2. Show submission list
3. Help you grade efficiently

Tips for Best Results

  1. Use course codes: Be specific (e.g., “BADM 350” instead of “my course”)
  2. Combine requests: “Show submissions and analytics for Assignment 3”
  3. Ask for summaries: “Summarize student performance in BADM 350”
  4. Leverage anonymization: Work confidently knowing student data is protected
  5. Automate repetitive tasks: Use messaging tools for reminders and follow-ups

Advanced Features

Automated Peer Review Follow-Up

You: "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

Student Performance Analysis

You: "Analyze student performance trends in BADM 350"

Claude can:
- Identify struggling students
- Track assignment completion patterns
- Suggest interventions
- Generate support lists

Bulk Communication

You: "Message all students who haven't submitted Assignment 3"

Claude will:
- Identify non-submitters
- Draft appropriate message
- Send bulk communication

Troubleshooting

“Connection failed” or “Authentication error”

“No students showing” or “empty results”

Anonymization Not Working

Need More Help?

Contributing

We welcome contributions! See the main README for guidelines.

Support

For questions or issues:


Happy teaching! 🎓