Skip to main content
Glama

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

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

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

Latest Blog Posts

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