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
- An MCP client — whichever AI assistant you already use. Claude Desktop, Claude Code, ChatGPT, Cursor, VS Code, Zed, Windsurf and Continue all work; see supported clients.
- 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 "Canvas MCP / AI teaching assistant"
- Copy the token immediately
UIUC restricts self-service token creation. Request an API token through the Canvas API token request form (answers.uillinois.edu KB 150325) — the token arrives by secure email.
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. Connect Your MCP Client
Add Canvas MCP to your client's MCP config. Most clients read this exact entry and differ only in where the file lives:
{
"mcpServers": {
"canvas-api": {
"command": "/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
}
}
}
The client configuration guide lists where that file lives for Claude Desktop, Cursor, Zed, Windsurf, Continue and others — check it for your client, since some use their own schema (Zed nests the server under context_servers). Claude Desktop users can skip the JSON entirely and install the one-click extension instead.
5. Test and Start
canvas-mcp-server --test
canvas-mcp-server --config
Restart your client 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- View rubric criteria, ratings, and pointsassociate_rubric- Link rubric to assignmentgrade_with_rubric- Grade using rubricbulk_grade_submissions- Batch grading (10+ at once)
Student Analytics
get_student_analytics- Per-student engagement scores, ranked so disengaged students surface firstget_assignment_analytics- Performance breakdown for a single assignmentget_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!