Skip to main content
Glama

Canvas MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CANVAS_API_URLYesThe URL for your university's Canvas API (e.g., https://canvas.illinois.edu/api/v1)
CANVAS_API_TOKENYesYour Canvas API token for authentication with the Canvas LMS API

Schema

Prompts

Interactive templates invoked by user choice

NameDescription
summarize-courseGenerate a summary of a Canvas course

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Tools

Functions exposed to the LLM to take actions

NameDescription
list_courses

List courses for the authenticated user.

get_course_details

Get detailed information about a specific course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
get_course_content_overview

Get a comprehensive overview of course content including pages, modules, and syllabus.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID include_pages: Whether to include pages information include_modules: Whether to include modules and their items include_syllabus: Whether to include syllabus content
list_assignments

List assignments for a specific course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
get_assignment_details

Get detailed information about a specific assignment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID
assign_peer_review

Manually assign a peer review to a student for a specific assignment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID reviewer_id: The Canvas user ID of the student who will do the review reviewee_id: The Canvas user ID of the student whose submission will be reviewed
list_peer_reviews

List all peer review assignments for a specific assignment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID
list_submissions

List submissions for a specific assignment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID
get_assignment_analytics

Get detailed analytics about student performance on a specific assignment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID
list_discussion_topics

List discussion topics for a specific course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID include_announcements: Whether to include announcements in the list (default: False)
get_discussion_topic_details

Get detailed information about a specific discussion topic.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID topic_id: The Canvas discussion topic ID
list_discussion_entries

List discussion entries (posts) for a specific discussion topic with optional full content and replies.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID topic_id: The Canvas discussion topic ID include_full_content: Whether to fetch full content for each entry (default: False) include_replies: Whether to fetch replies for each entry (default: False)
get_discussion_entry_details

Get detailed information about a specific discussion entry including all its replies.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID topic_id: The Canvas discussion topic ID entry_id: The Canvas discussion entry ID include_replies: Whether to fetch and include replies (default: True)
get_discussion_with_replies

Enhanced function to get discussion entries with optional reply fetching.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID topic_id: The Canvas discussion topic ID include_replies: Whether to fetch detailed replies for all entries (default: False)
post_discussion_entry

Post a new top-level entry to a discussion topic.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID topic_id: The Canvas discussion topic ID message: The entry message content
reply_to_discussion_entry

Reply to a student's discussion entry/comment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID topic_id: The Canvas discussion topic ID entry_id: The Canvas discussion entry ID to reply to message: The reply message content
create_discussion_topic

Create a new discussion topic for a course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID title: The title/subject of the discussion topic message: The content/body of the discussion topic delayed_post_at: Optional ISO 8601 datetime to schedule posting (e.g., "2024-01-15T12:00:00Z") lock_at: Optional ISO 8601 datetime to automatically lock the discussion require_initial_post: Whether students must post before seeing other posts pinned: Whether to pin this discussion topic
list_announcements

List announcements for a specific course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
create_announcement

Create a new announcement for a course with optional scheduling.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID title: The title/subject of the announcement message: The content/body of the announcement delayed_post_at: Optional ISO 8601 datetime to schedule posting (e.g., "2024-01-15T12:00:00Z") lock_at: Optional ISO 8601 datetime to automatically lock the announcement
delete_announcement
Delete an announcement from a Canvas course. Announcements are technically discussion topics in Canvas, so this uses the discussion_topics endpoint to delete them. Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID announcement_id: The Canvas announcement/discussion topic ID to delete Returns: String describing the deletion result with status and title Raises: HTTPError: - 401: User doesn't have permission to delete the announcement - 404: Announcement not found in the specified course - 403: Editing is restricted for this announcement Example usage: result = delete_announcement("60366", "925355") print(f"Result: {result}")
bulk_delete_announcements
Delete multiple announcements from a Canvas course. Args: course_identifier: The Canvas course code or ID announcement_ids: List of announcement IDs to delete stop_on_error: If True, stop processing on first error; if False, continue with remaining Returns: String with detailed results including successful and failed deletions Example usage: results = bulk_delete_announcements( "60366", ["925355", "925354", "925353"], stop_on_error=False )
delete_announcement_with_confirmation
Delete an announcement with optional safety checks. Args: course_identifier: The Canvas course code or ID announcement_id: The announcement ID to delete require_title_match: If provided, only delete if the announcement title matches exactly dry_run: If True, verify but don't actually delete (for testing) Returns: String with operation result including status and title match information Raises: ValueError: If require_title_match is provided and doesn't match the actual title Example usage: # Delete only if title matches exactly (safety check) result = delete_announcement_with_confirmation( "60366", "925355", require_title_match="Preparing for the week", dry_run=False )
delete_announcements_by_criteria
Delete announcements matching specific criteria. Args: course_identifier: The Canvas course code or ID criteria: Dict with search criteria: - "title_contains": str - Delete if title contains this text - "older_than": str - Delete if posted before this date (ISO format) - "newer_than": str - Delete if posted after this date (ISO format) - "title_regex": str - Delete if title matches regex pattern limit: Maximum number of announcements to delete (safety limit) dry_run: If True, show what would be deleted without actually deleting Returns: String with operation results showing matched and deleted announcements Example usage: # Delete all announcements older than 30 days from datetime import datetime, timedelta results = delete_announcements_by_criteria( "60366", criteria={ "older_than": (datetime.now() - timedelta(days=30)).isoformat(), "title_contains": "reminder" }, limit=10, dry_run=False )
list_pages

List pages for a specific course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID sort: Sort criteria ('title', 'created_at', 'updated_at') order: Sort order ('asc' or 'desc') search_term: Search for pages containing this term in title or body published: Filter by published status (True, False, or None for all)
get_page_content

Get the full content body of a specific page.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID page_url_or_id: The page URL or page ID
get_page_details

Get detailed information about a specific page.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID page_url_or_id: The page URL or page ID
get_front_page

Get the front page content for a course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
create_page

Create a new page in a Canvas course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID title: The title of the new page body: The HTML content for the page published: Whether the page should be published (default: True) front_page: Whether this should be the course front page (default: False) editing_roles: Who can edit the page (default: "teachers")
edit_page_content

Edit the content of a specific page.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID page_url_or_id: The page URL or page ID new_content: The new HTML content for the page title: Optional new title for the page
get_anonymization_status

Get current data anonymization status and statistics.

Returns: Status information about data anonymization
list_module_items

List items within a specific module, including pages.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID module_id: The module ID include_content_details: Whether to include additional details about content items
list_groups

List all groups and their members for a specific course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
list_users

List users enrolled in a specific course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
get_student_analytics

Get detailed analytics about student activity, participation, and progress in a course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID current_only: Whether to include only assignments due on or before today include_participation: Whether to include participation data (discussions, submissions) include_assignment_stats: Whether to include assignment completion statistics include_access_stats: Whether to include course access statistics
create_student_anonymization_map

Create a local CSV file mapping real student data to anonymous IDs for a course.

This tool generates a de-anonymization key that allows faculty to identify students from their anonymous IDs. The file is saved locally and should be kept secure. Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
list_assignment_rubrics

Get rubrics attached to a specific assignment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID
get_assignment_rubric_details

Get detailed rubric criteria and rating descriptions for an assignment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID
get_rubric_details

Get detailed rubric criteria and scoring information.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID rubric_id: The Canvas rubric ID
get_submission_rubric_assessment

Get rubric assessment scores for a specific submission.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID user_id: The Canvas user ID of the student
grade_with_rubric

Submit grades using rubric criteria.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: The Canvas assignment ID user_id: The Canvas user ID of the student rubric_assessment: JSON string with rubric assessment data (format: {"criterion_id": {"points": X, "comments": "..."}, ...}) comment: Optional overall comment for the submission
list_all_rubrics

List all rubrics in a specific course with optional detailed criteria.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID include_criteria: Whether to include detailed criteria and ratings (default: True)
create_rubric

Create a new rubric in the specified course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID title: The title of the rubric criteria: JSON string or dictionary containing rubric criteria structure free_form_criterion_comments: Allow free-form comments on rubric criteria (default: True) association_id: Optional ID to associate rubric with (assignment, course, etc.) association_type: Type of association (Assignment, Course, Account) (default: Assignment) use_for_grading: Whether to use rubric for grade calculation (default: False) purpose: Purpose of the rubric association (grading, bookmark) (default: grading) Example criteria format (as JSON string or dict): { "1": { "description": "Quality of Work", "points": 25, "long_description": "Detailed description of quality expectations", "ratings": { "1": {"description": "Excellent", "points": 25, "long_description": "Exceeds expectations"}, "2": {"description": "Good", "points": 20, "long_description": "Meets expectations"}, "3": {"description": "Satisfactory", "points": 15, "long_description": "Approaches expectations"}, "4": {"description": "Needs Improvement", "points": 10, "long_description": "Below expectations"} } } } Note: Ratings can be provided as objects (as above) or arrays - both formats are supported.
update_rubric

Update an existing rubric in the specified course.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID rubric_id: The ID of the rubric to update title: Optional new title for the rubric criteria: Optional JSON string or dictionary containing updated rubric criteria structure free_form_criterion_comments: Optional boolean to allow free-form comments skip_updating_points_possible: Skip updating points possible calculation (default: False)
delete_rubric

Delete a rubric and remove all its associations.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID rubric_id: The ID of the rubric to delete
associate_rubric_with_assignment

Associate an existing rubric with an assignment.

Args: course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID rubric_id: The ID of the rubric to associate assignment_id: The ID of the assignment to associate with use_for_grading: Whether to use rubric for grade calculation (default: False) purpose: Purpose of the association (grading, bookmark) (default: grading)
get_peer_review_assignments

Get comprehensive peer review assignment mapping showing who is assigned to review whom with accurate completion status.

Args: course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: Canvas assignment ID include_names: Include student names (requires additional API call) include_submission_details: Include submission metadata
get_peer_review_completion_analytics

Get detailed analytics on peer review completion rates with student-by-student breakdown and summary statistics.

Args: course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: Canvas assignment ID include_student_details: Include per-student breakdown group_by_status: Group students by completion status
generate_peer_review_report

Generate comprehensive peer review completion report with executive summary, detailed analytics, and actionable follow-up recommendations.

Args: course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: Canvas assignment ID report_format: Report format (markdown, csv, json) include_executive_summary: Include executive summary include_student_details: Include student details include_action_items: Include action items include_timeline_analysis: Include timeline analysis save_to_file: Save report to local file filename: Custom filename for saved report
get_peer_review_followup_list

Get prioritized list of students requiring instructor follow-up based on peer review completion status.

Args: course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: Canvas assignment ID priority_filter: Priority filter (urgent, medium, low, all) include_contact_info: Include email addresses if available days_threshold: Days since assignment for urgency calculation
get_peer_review_comments
Retrieve actual comment text for peer reviews on a specific assignment. Args: course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID assignment_id: Canvas assignment ID include_reviewer_info: Include reviewer student information include_reviewee_info: Include reviewee student information include_submission_context: Include original submission details anonymize_students: Replace student names with anonymous IDs
analyze_peer_review_quality
Analyze the quality and content of peer review comments. Args: course_identifier: Canvas course code or ID assignment_id: Canvas assignment ID analysis_criteria: JSON string of custom analysis criteria (optional) generate_report: Whether to generate detailed analysis report
identify_problematic_peer_reviews
Flag reviews that may need instructor attention. Args: course_identifier: Canvas course code or ID assignment_id: Canvas assignment ID criteria: JSON string of custom flagging criteria (optional)
extract_peer_review_dataset
Export all peer review data in various formats for analysis. Args: course_identifier: Canvas course code or ID assignment_id: Canvas assignment ID output_format: Output format (csv, json, xlsx) include_analytics: Include quality analytics in output anonymize_data: Anonymize student data save_locally: Save file locally filename: Custom filename (optional)
generate_peer_review_feedback_report
Create instructor-ready reports on peer review quality. Args: course_identifier: Canvas course code or ID assignment_id: Canvas assignment ID report_type: Report type (comprehensive, summary, individual) include_student_names: Whether to include student names format_type: Output format (markdown, html, text)
send_conversation
Send messages to students via Canvas conversations. Args: course_identifier: Canvas course ID or code recipient_ids: List of Canvas user IDs to send to subject: Message subject line (max 255 characters) body: Message content (required) group_conversation: If True, creates group conversation (required for custom subjects) bulk_message: If True, sends individual messages with same subject to each recipient context_code: Course context (e.g., "course_60366") mode: "sync" or "async" for bulk messages (>100 recipients should use async) force_new: Force creation of new conversation even if one exists attachment_ids: Optional list of attachment IDs Returns: Dict with conversation details or batch operation status
send_peer_review_reminders
Send peer review completion reminders to specific students. Args: course_identifier: Canvas course ID assignment_id: Canvas assignment ID for peer review recipient_ids: List of Canvas user IDs needing reminders custom_message: Optional custom message (uses default template if None) include_assignment_link: Whether to include direct link to assignment subject_prefix: Prefix for message subject Returns: Dict with sending results and any failures
list_conversations
List conversations for the current user. Args: scope: Conversation scope ("unread", "starred", "sent", "archived", or "all") filter_ids: Optional list of conversation IDs to filter by filter_mode: How to apply filter_ids ("and" or "or") include_participants: Include participant information include_all_ids: Include all conversation participant IDs Returns: List of conversations
get_conversation_details
Get detailed conversation information with messages. Args: conversation_id: ID of the conversation to retrieve auto_mark_read: Automatically mark conversation as read when viewed include_messages: Include all messages in the conversation Returns: Detailed conversation information
get_unread_count
Get number of unread conversations. Returns: Unread conversation count
mark_conversations_read
Mark multiple conversations as read. Args: conversation_ids: List of conversation IDs to mark as read Returns: Result of the batch operation
send_bulk_messages_from_list
Send customized messages to multiple recipients using templates. Args: course_identifier: Canvas course ID recipient_data: List of dicts with recipient info and custom data subject_template: Subject template with placeholders (e.g., "Reminder - {missing_count} reviews") body_template: Body template with placeholders (e.g., "Hi {name}, you have {missing_count}...") context_code: Course context mode: "sync" or "async" Returns: Results of bulk message sending
send_peer_review_followup_campaign
Complete workflow: analyze peer reviews and send targeted reminders. Args: course_identifier: Canvas course ID assignment_id: Canvas assignment ID for peer review Returns: Results of the complete campaign including analytics and messaging

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vishalsachdev/canvas-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server