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
- Log in to your Canvas account
- Go to Account → Settings
- Scroll to Approved Integrations
- Click + New Access Token
- Name it "Claude AI Teaching Assistant"
- 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
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:
- 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
- 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 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 courseget_assignment_details- Detailed assignment informationlist_submissions- Student submission statusget_assignment_analytics- Performance and completion statistics
Grading & Rubrics
create_rubric- Create new rubricsget_rubric_details- View rubric criteriaassociate_rubric- Link rubric to assignmentgrade_submission_with_rubric- Grade using rubricbulk_grade_submissions- Batch grading (10+ at once)
Student Analytics
get_student_analytics- Multi-dimensional performance analysisidentify_at_risk_students- Flag students needing supportget_peer_review_completion_analytics- Peer review tracking
Peer Review Management
list_peer_reviews- View peer review assignmentsget_peer_review_comments- Extract review text and metadataanalyze_peer_review_quality- Quality metrics and analysisidentify_problematic_peer_reviews- Flag low-quality reviews
Communication & Messaging
send_conversation- Send messages to studentssend_peer_review_reminders- Automated reminder workflowcreate_announcement- Post course announcements
Discussion Management
list_discussion_topics- View discussion forumsget_discussion_entry_details- Read student postsreply_to_discussion_entry- Respond to studentscreate_discussion_topic- Start new discussions
Example Workflows
📋 Monday Morning Check-In
Ask: "Give me a status update on my courses"
📅 After Assignment Due Date
Ask: "Assignment 3 was due Friday in BADM 350. Who hasn't submitted?"
👥 Peer Review Management
Ask: "Check peer review completion for Assignment 2 in BADM 350"
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=truein.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!