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:
- Assignment Management: Track submissions, identify missing work, analyze completion rates
- Grading & Rubrics: Manage rubrics, grade submissions, provide feedback
- Student Analytics: Monitor student performance, identify at-risk students, track engagement
- Peer Review Management: Track peer review completion, analyze review quality, send reminders
- Discussion Facilitation: Monitor discussions, respond to students, analyze participation
- Communication: Send targeted messages, create announcements, automate reminders
- FERPA Compliance: Built-in data anonymization for AI-safe student analytics
Prerequisites
- Python 3.10+ installed on your computer
- Claude Desktop - Download from claude.ai
- Canvas Account with instructor/TA permissions
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
- Log in to your Canvas account
- Go to Account → Settings
- Scroll down to Approved Integrations
- Click + New Access Token
- Give it a purpose (e.g., “Claude AI Teaching Assistant”)
- Click Generate Token
- Copy the token immediately - you won’t see it again!
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:
- Replace
https://canvas.youruniversity.edu
with your actual Canvas URL
- Set
ENABLE_DATA_ANONYMIZATION=true
for FERPA-compliant student data handling
- The anonymization system converts student names to anonymous IDs (e.g., “Student_abc123”) before sending data to AI
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:
- Converts student names to anonymous IDs (e.g., “John Smith” → “Student_abc123”)
- Masks email addresses (e.g., “john@university.edu” → “student_abc123@masked”)
- Filters PII from discussion posts and submissions (phone numbers, SSNs)
- Maintains consistency - same student always gets the same anonymous ID
- 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
- 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 (it’s in .gitignore
)
- Local processing only - All data stays on your machine; nothing sent to external servers
- Review before sharing - If sharing Claude conversations, ensure student data is anonymous
How to Use Canvas MCP
Quick Start Prompts for Educators
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”
- “Identify students who haven’t completed peer reviews”
- “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” (provide criteria)
Discussion Facilitation:
- “What are the active discussions in my course?”
- “Show me recent student posts in the Week 5 discussion”
- “Which students haven’t participated in discussions?”
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”
When you ask Claude a question, it uses various “tools” (🔨 icon) to fetch data from Canvas. For educators, common tools include:
get_assignment_analytics
- Submission statistics and performance
list_submissions
- Student submission status
get_peer_review_completion_analytics
- Peer review tracking
send_peer_review_reminders
- Automated student messaging
list_discussion_topics
- Discussion management
create_rubric
- Rubric creation
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
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
- assign_peer_review - Manually assign reviews
Communication & Messaging
- send_conversation - Send messages to students
- send_peer_review_reminders - Automated reminder workflow
- create_announcement - Post course announcements
- send_peer_review_followup_campaign - Complete analytics → messaging pipeline
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
Course Content
- list_courses - View all your courses
- get_course_details - Syllabus and course info
- list_pages - Access course pages
- get_page_content - Read page 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
- Use course codes: Be specific (e.g., “BADM 350” instead of “my course”)
- Combine requests: “Show submissions and analytics for Assignment 3”
- Ask for summaries: “Summarize student performance in BADM 350”
- Leverage anonymization: Work confidently knowing student data is protected
- 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
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”
- 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?
Contributing
We welcome contributions! See the main README for guidelines.
Support
For questions or issues:
Happy teaching! 🎓