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

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_coursesC

List courses for the authenticated user.

get_course_detailsB

Get detailed information about a specific course.

    Args:
        course_identifier: Course code or Canvas ID
    
get_course_content_overviewA

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

    Args:
        course_identifier: Course code or Canvas ID
        include_pages: Include pages information (default: True)
        include_modules: Include modules and their items (default: True)
        include_syllabus: Include syllabus content (default: True)
    
list_pagesA

List pages for a specific course.

    Args:
        course_identifier: Course code or Canvas ID
        sort: Sort by 'title', 'created_at', or 'updated_at'
        order: 'asc' or 'desc'
        search_term: Filter pages containing this term
        published: Filter by published status (None for all)
    
get_page_contentA

Get the full content body of a specific page.

    Args:
        course_identifier: Course code or Canvas ID
        page_url_or_id: Page URL slug or page ID
    
get_page_detailsA

Get detailed information about a specific page.

    Args:
        course_identifier: Course code or Canvas ID
        page_url_or_id: Page URL slug or page ID
    
get_front_pageA

Get the front page content for a course.

    Args:
        course_identifier: Course code or Canvas ID
    
list_module_itemsA

List items within a specific module, including pages.

    Args:
        course_identifier: Course code or Canvas ID
        module_id: The module ID
        include_content_details: Include additional content details (default: True)
    
list_assignmentsA

List assignments for a specific course.

    Args:
        course_identifier: Course code or Canvas ID
    
get_assignment_detailsB

Get detailed information about a specific assignment.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
    
list_discussion_topicsB

List discussion topics for a specific course.

    Args:
        course_identifier: Course code or Canvas ID
        include_announcements: Include announcements in the list (default: False)
    
get_discussion_topic_detailsA

Get detailed information about a specific discussion topic.

    Args:
        course_identifier: Course code or Canvas ID
        topic_id: Discussion topic ID
    
list_discussion_entriesA

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

    Args:
        course_identifier: Course code or Canvas ID
        topic_id: Discussion topic ID
        include_full_content: Fetch full content for each entry (default: False)
        include_replies: Fetch replies for each entry (default: False)
    
get_discussion_entry_detailsA

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

    Args:
        course_identifier: Course code or Canvas ID
        topic_id: Discussion topic ID
        entry_id: Discussion entry ID
        include_replies: Fetch and include replies (default: True)
    
get_discussion_with_repliesA

Enhanced function to get discussion entries with optional reply fetching.

    Args:
        course_identifier: Course code or Canvas ID
        topic_id: Discussion topic ID
        include_replies: Fetch detailed replies for all entries (default: False)
    
post_discussion_entryB

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

    Args:
        course_identifier: Course code or Canvas ID
        topic_id: Discussion topic ID
        message: Entry message content
    
reply_to_discussion_entryC

Reply to a student's discussion entry/comment.

    Args:
        course_identifier: Course code or Canvas ID
        topic_id: Discussion topic ID
        entry_id: Discussion entry ID to reply to
        message: Reply message content
    
list_modulesA

List all modules in a course.

    Args:
        course_identifier: Course code or Canvas ID
        include_items: Include summary of items in each module
        search_term: Filter modules by name
    
get_course_structureA

Get the full module and item structure for a course in a single call.

    Args:
        course_identifier: Course code or Canvas ID
        include_unpublished: Include unpublished modules and items (default: True)
    
download_course_fileA

Download a file from a Canvas course to the local filesystem.

    Use list_course_files or list_module_items to find file IDs.

    Args:
        course_identifier: Course code or Canvas ID
        file_id: Canvas file ID
        save_directory: Local directory to save to (default: system temp dir, must exist)
    
read_course_fileA

Read a file from a Canvas course and return its content as base64.

    Unlike download_course_file which saves to the server's local filesystem,
    this tool returns the file content directly in the response. This is useful
    when the MCP server runs on a different machine than the client.

    Use list_course_files or list_module_items to find file IDs.

    Args:
        course_identifier: Course code or Canvas ID
        file_id: Canvas file ID
        max_size_mb: Maximum file size in MB to read (default: 25). Clamped server-side to
            READ_FILE_MAX_SIZE_MB (default 100). Files larger than the effective limit are
            rejected to avoid excessive memory usage.
    
list_course_filesA

List files in a Canvas course with optional search.

    Args:
        course_identifier: Course code or Canvas ID
        search_term: Filter files by name
        sort: Sort field: name, size, created_at, updated_at, content_type (default: updated_at)
        order: "asc" or "desc" (default: desc)
    
list_conversationsB
    List conversations for the current user.

    Args:
        scope: "unread", "starred", "sent", "archived", or "all"
        filter_ids: Conversation IDs to filter by
        filter_mode: "and" or "or" for filter_ids
        include_participants: Include participant info
        include_all_ids: Include all participant IDs
    
get_conversation_detailsA
    Get detailed conversation information with messages.

    Args:
        conversation_id: Conversation ID
        auto_mark_read: Mark as read when viewed
        include_messages: Include all messages
    
get_unread_countA

Get number of unread conversations.

mark_conversations_readB
    Mark multiple conversations as read.

    Args:
        conversation_ids: List of conversation IDs to mark as read
    
search_canvas_toolsA
    Search available Canvas code API tools by keyword.

    Args:
        query: Search term to filter tools (empty = all)
        detail_level: "names" (paths only), "signatures" (recommended), or "full" (complete file contents)
    
get_my_upcoming_assignmentsB

Get your upcoming assignments across all courses.

    Args:
        days: Number of days to look ahead (default: 7)
    
get_my_submission_statusA

Get your submission status for assignments.

    Args:
        course_identifier: Course code or Canvas ID (omit for all courses)
    
get_my_course_gradesA

Get your current grades across all enrolled courses.

get_my_todo_itemsA

Get your Canvas TODO list.

get_my_peer_reviews_todoA

Get peer reviews you need to complete.

    Args:
        course_identifier: Course code or Canvas ID (omit for all courses)
    
assign_peer_reviewB

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

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        reviewer_id: User ID of the student who will review
        reviewee_id: User ID of the student whose submission will be reviewed
    
list_peer_reviewsB

List all peer review assignments for a specific assignment.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
    
list_submissionsB

List submissions for a specific assignment.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
    
get_assignment_analyticsB

Get detailed analytics about student performance on a specific assignment.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
    
create_assignmentB

Create a new assignment in a course.

    Args:
        course_identifier: Course code or Canvas ID
        name: Assignment name/title
        description: HTML description
        submission_types: Comma-separated types (online_text_entry, online_url, online_upload, discussion_topic, none, on_paper, external_tool)
        due_at: Due date in ISO 8601 format
        unlock_at: Available date in ISO 8601 format
        lock_at: Lock date in ISO 8601 format
        points_possible: Maximum points
        grading_type: One of: points, letter_grade, pass_fail, percent, not_graded
        published: Whether to publish immediately (default: False)
        assignment_group_id: Assignment group ID
        peer_reviews: Enable peer reviews
        automatic_peer_reviews: Auto-assign peer reviews
        allowed_extensions: Comma-separated file extensions (e.g., "pdf,docx,txt")
    
update_assignmentA

Update an existing assignment in a course.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Assignment ID to update
        name: New assignment name/title
        description: New HTML description
        submission_types: Comma-separated types (online_text_entry, online_url, online_upload, discussion_topic, none, on_paper, external_tool)
        due_at: New due date in ISO 8601 format
        unlock_at: New available date in ISO 8601 format
        lock_at: New lock date in ISO 8601 format
        points_possible: New maximum points
        grading_type: One of: points, letter_grade, pass_fail, percent, not_graded
        published: Whether to publish the assignment
        assignment_group_id: Assignment group ID to move to
        peer_reviews: Enable peer reviews
        automatic_peer_reviews: Auto-assign peer reviews
        allowed_extensions: Comma-separated file extensions (e.g., "pdf,docx,txt")
    
bulk_grade_submissionsA

Grade multiple submissions efficiently with concurrent processing.

    Supports both rubric-based and simple point-based grading in batches.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        grades: Dict mapping user_id to {rubric_assessment?, grade?, comment?}
        dry_run: If True, validate without submitting (default: False)
        max_concurrent: Max concurrent grading operations (default: 5)
        rate_limit_delay: Delay between batches in seconds (default: 1.0)
    
create_discussion_topicB

Create a new discussion topic for a course.

    Args:
        course_identifier: Course code or Canvas ID
        title: Discussion topic title
        message: Discussion topic body content
        delayed_post_at: ISO 8601 datetime to schedule posting
        lock_at: ISO 8601 datetime to auto-lock the discussion
        require_initial_post: Students must post before seeing others (default: False)
        pinned: Pin this discussion topic (default: False)
    
list_announcementsA

List announcements for a specific course.

    Args:
        course_identifier: Course code or Canvas ID
    
create_announcementB

Create a new announcement for a course with optional scheduling.

    Args:
        course_identifier: Course code or Canvas ID
        title: Announcement title
        message: Announcement body content
        delayed_post_at: ISO 8601 datetime to schedule posting
        lock_at: ISO 8601 datetime to auto-lock the announcement
    
delete_announcementA

Delete an announcement from a Canvas course.

    Permanent — Canvas may retain a recycle-bin copy depending on admin settings.

    Args:
        course_identifier: Course code or Canvas ID
        announcement_id: Announcement ID to delete
    
bulk_delete_announcementsA

Delete multiple announcements from a Canvas course.

    Permanent — Canvas may retain a recycle-bin copy depending on admin settings.

    Args:
        course_identifier: Course code or Canvas ID
        announcement_ids: List of announcement IDs to delete
        stop_on_error: Stop on first error; if False, continue with remaining (default: False)
        limit: Max number of announcements to delete in one call (default: 25). Ignored when dry_run=True, so large batches can be previewed safely.
        dry_run: Fetch titles and report what would be deleted without deleting (default: False)
    
delete_announcement_with_confirmationA

Delete an announcement with optional safety checks.

    Permanent — Canvas may retain a recycle-bin copy depending on admin settings.

    Args:
        course_identifier: Course code or Canvas ID
        announcement_id: Announcement ID to delete
        require_title_match: Only delete if title matches this string exactly
        dry_run: Verify but don't actually delete (default: False)
    
delete_announcements_by_criteriaA

Delete announcements matching specific criteria.

    Permanent — Canvas may retain a recycle-bin copy depending on admin settings.

    Args:
        course_identifier: Course code or Canvas ID
        criteria: Dict with keys: title_contains, older_than (ISO), newer_than (ISO), title_regex
        limit: Max number of announcements to delete (safety limit)
        dry_run: Show what would be deleted without deleting (default: True)
    
create_moduleB

Create a new module in a course.

    Args:
        course_identifier: Course code or Canvas ID
        name: Module name
        position: Position in module list (1-indexed)
        unlock_at: Unlock date/time (ISO 8601)
        require_sequential_progress: Students must complete items in order
        prerequisite_module_ids: Comma-separated module IDs that must be completed first
        published: Whether the module is published (default: True)
    
update_moduleA

Update an existing module's settings.

    Args:
        course_identifier: Course code or Canvas ID
        module_id: Module ID to update
        name: New module name
        position: New position in module list
        unlock_at: New unlock date/time (ISO 8601), or empty string to remove
        require_sequential_progress: Students must complete items in order
        prerequisite_module_ids: Comma-separated prerequisite module IDs, or empty to clear
        published: Whether the module is published
    
delete_moduleA

Delete a module from a course.

    IMPORTANT: Permanently removes the module and its item associations. The actual content (pages, assignments, etc.) is NOT deleted, only the module organization.

    Args:
        course_identifier: Course code or Canvas ID
        module_id: Module ID to delete
    
add_module_itemA

Add an item to a module.

    IMPORTANT: content_id required for File, Discussion, Assignment, Quiz, ExternalTool. page_url required for Page. title required for SubHeader, ExternalUrl.

    Args:
        course_identifier: Course code or Canvas ID
        module_id: Target module ID
        item_type: One of: File, Page, Discussion, Assignment, Quiz, SubHeader, ExternalUrl, ExternalTool
        content_id: Canvas ID of the content (required for File, Discussion, Assignment, Quiz, ExternalTool)
        title: Item title (required for SubHeader, ExternalUrl; optional for others)
        position: Position within module (1-indexed)
        indent: Indentation level (0-4)
        page_url: URL slug of the page (required for Page type)
        external_url: URL for ExternalUrl items
        new_tab: Open external links in new tab (default: False)
        completion_requirement_type: One of: must_view, must_submit, must_contribute, min_score, must_mark_done
        completion_requirement_min_score: Minimum score (only for min_score type)
    
update_module_itemB

Update an existing module item.

    Args:
        course_identifier: Course code or Canvas ID
        module_id: Module ID containing the item
        item_id: Item ID to update
        title: New item title
        position: New position within module
        indent: New indentation level (0-4)
        external_url: New URL (ExternalUrl items only)
        new_tab: Open external links in new tab
        completion_requirement_type: New completion type, or empty string to remove
        completion_requirement_min_score: Minimum score (for min_score type)
        published: Whether the item is published
        move_to_module_id: Move item to a different module
    
delete_module_itemA

Remove an item from a module.

    IMPORTANT: Only unlinks the item from the module. The actual content (page, assignment, etc.) is NOT deleted.

    Args:
        course_identifier: Course code or Canvas ID
        module_id: Module ID containing the item
        item_id: Item ID to remove
    
upload_course_fileA

Upload a file to Canvas course storage.

    Uploads a local file to a Canvas course. The returned file ID can be used with
    add_module_item (item_type='File') or send_conversation (attachment_ids).

    Args:
        course_identifier: Course code or Canvas ID
        file_path: Absolute path to the local file to upload
        folder_path: Canvas folder path (default: "course files" root)
        display_name: Override the filename shown in Canvas
        on_duplicate: "rename" (default) or "overwrite"
    
update_page_settingsA

Update settings for an existing page (without changing content).

    Args:
        course_identifier: Course code or Canvas ID
        page_url_or_id: Page URL slug or page ID
        published: True to publish, False to unpublish
        front_page: True to make this the course front page
        editing_roles: One of: teachers, students, members, public
        notify_of_update: True to notify users of the update

    IMPORTANT: The front page cannot be unpublished. First set another page as front page.
    
bulk_update_pagesA

Update settings for multiple pages at once.

    Args:
        course_identifier: Course code or Canvas ID
        page_urls: Comma-separated list of page URL slugs
        published: True to publish all, False to unpublish all
        editing_roles: One of: teachers, students, members, public
        notify_of_update: True to notify users of updates

    IMPORTANT: front_page is not supported in bulk updates.
    
create_pageB

Create a new page in a Canvas course.

    Args:
        course_identifier: Course code or Canvas ID
        title: Page title
        body: HTML content for the page
        published: Whether to publish (default: True)
        front_page: Whether to set as front page (default: False)
        editing_roles: Who can edit (default: "teachers")
    
edit_page_contentC

Edit the content of a specific page.

    Args:
        course_identifier: Course code or Canvas ID
        page_url_or_id: Page URL slug or page ID
        new_content: New HTML content for the page
        title: Optional new title for the page
    
delete_pageA

Delete a page from a Canvas course.

    Permanent — Canvas may retain a recycle-bin copy depending on admin settings.

    Args:
        course_identifier: Course code or Canvas ID
        page_url_or_id: Page URL slug or page ID to delete
        require_title_match: Safety check — only delete if page title matches exactly
    
get_rubricA

Get detailed rubric criteria, ratings, and points.

    Accepts either rubric_id or assignment_id (at least one required).
    If both provided, uses rubric_id (more specific).

    Args:
        course_identifier: Course code or Canvas ID
        rubric_id: Canvas rubric ID (direct lookup)
        assignment_id: Canvas assignment ID (get rubric attached to assignment)
    
get_rubric_assessmentB

Get rubric assessment scores for a specific submission.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        user_id: Canvas user ID of the student
    
grade_with_rubricA

Submit grades using rubric criteria.

    IMPORTANT: Criterion IDs often start with underscore (e.g., "_8027").
    Use get_rubric to find criterion/rating IDs.
    The rubric must be attached to the assignment and configured for grading (use_for_grading=true).

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        user_id: Canvas user ID of the student
        rubric_assessment: Dict mapping criterion_id to {points (required), rating_id?, comments?}
        comment: Optional overall comment for the submission
    
list_rubricsA

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

    Args:
        course_identifier: Course code or Canvas ID
        include_criteria: Include detailed criteria and ratings (default: True)
    
create_rubricA

Create a new rubric in a course, optionally associating it with an assignment.

    Uses bracket-notation form-data encoding required by the Canvas rubric API.

    The ``criteria`` parameter is a JSON string mapping arbitrary criterion keys to
    objects with the following fields:

    - ``description`` (required): Short criterion label shown in the rubric grid
    - ``points`` (required): Maximum points for this criterion (non-negative number)
    - ``long_description`` (optional): Detailed criterion description
    - ``ratings`` (optional): List (or object) of rating levels, each with:
        - ``description`` (required): Rating label (e.g. "Excellent")
        - ``points`` (required): Points for this rating (non-negative number)
        - ``long_description`` (optional): Detailed rating description

    Example ``criteria`` JSON::

        {
          "c1": {
            "description": "Content Quality",
            "points": 10,
            "ratings": [
              {"description": "Excellent", "points": 10},
              {"description": "Satisfactory", "points": 7},
              {"description": "Needs Work", "points": 3}
            ]
          },
          "c2": {
            "description": "Grammar",
            "points": 5,
            "ratings": [
              {"description": "No errors", "points": 5},
              {"description": "Minor errors", "points": 3}
            ]
          }
        }

    Args:
        course_identifier: Course code or Canvas ID
        title: Rubric title
        criteria: JSON string defining rubric criteria (see docstring above)
        assignment_id: Optional assignment ID to immediately associate the rubric with
        use_for_grading: When associating with an assignment, use rubric for grade
                         calculation (default: False)
        reusable: Make rubric reusable across courses (default: False)
        free_form_criterion_comments: Allow free-form comments per criterion
                                      instead of rating selection (default: False)
    
associate_rubricB

Associate an existing rubric with an assignment.

    Args:
        course_identifier: Course code or Canvas ID
        rubric_id: ID of the rubric to associate
        assignment_id: ID of the assignment to associate with
        use_for_grading: Use rubric for grade calculation (default: False)
        purpose: Association purpose: grading, bookmark (default: grading)
    
get_peer_review_assignmentsA

Get peer review assignment mapping showing who reviews whom with completion status.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        include_names: Include student names
        include_submission_details: Include submission metadata
    
get_peer_review_completion_analyticsA

Get peer review completion analytics with student-level breakdown and summary stats.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        include_student_details: Include per-student breakdown
        group_by_status: Group students by completion status
    
generate_peer_review_reportA

Generate peer review completion report with summary, analytics, and follow-up recommendations.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        report_format: Output 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_listA

Get prioritized list of students needing follow-up on peer review completion.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        priority_filter: Filter by priority (urgent, medium, low, all)
        include_contact_info: Include email addresses
        days_threshold: Days since assignment for urgency calculation
    
get_peer_review_commentsA

Retrieve actual comment text for peer reviews on an assignment.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        include_reviewer_info: Include reviewer details
        include_reviewee_info: Include reviewee details
        include_submission_context: Include submission details
        anonymize_students: Replace names with anonymous IDs
    
analyze_peer_review_qualityA

Analyze the quality and content of peer review comments.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        analysis_criteria: JSON string of custom criteria
        generate_report: Generate detailed analysis report
    
identify_problematic_peer_reviewsB

Flag reviews that may need instructor attention.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        criteria: JSON string of custom flagging criteria
    
extract_peer_review_datasetA

Export all peer review data in various formats for analysis.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        output_format: Output format (csv, json, xlsx)
        include_analytics: Include quality analytics
        anonymize_data: Anonymize student data
        save_locally: Save file locally
        filename: Custom filename
    
generate_peer_review_feedback_reportB

Create instructor-ready reports on peer review quality.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        report_type: Report type (comprehensive, summary, individual)
        include_student_names: Include student names
        format_type: Output format (markdown, html, text)
    
send_conversationA
    Send messages to students via Canvas conversations.

    Args:
        course_identifier: Course code or Canvas ID
        recipient_ids: List of Canvas user IDs
        subject: Message subject (max 255 chars)
        body: Message content
        group_conversation: Create group conversation (required for custom subjects)
        bulk_message: Send individual messages with same subject to each recipient
        context_code: Course context (e.g., "course_60366")
        mode: "sync" or "async" (use async for >100 recipients)
        force_new: Force new conversation even if one exists
        attachment_ids: Optional attachment IDs
    
send_peer_review_remindersA
    Send peer review completion reminders to specific students.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
        recipient_ids: List of Canvas user IDs needing reminders
        custom_message: Custom message (uses default template if None)
        include_assignment_link: Include direct link to assignment
        subject_prefix: Prefix for message subject
    
send_bulk_messages_from_listB
    Send customized messages to multiple recipients using templates.

    Args:
        course_identifier: Course code or Canvas ID
        recipient_data: List of dicts with recipient info and template variables
        subject_template: Subject with placeholders (e.g., "Reminder - {missing_count} reviews")
        body_template: Body with placeholders (e.g., "Hi {name}, you have {missing_count}...")
        context_code: Course context
        mode: "sync" or "async"
    
send_peer_review_followup_campaignC
    Complete workflow: analyze peer reviews and send targeted reminders.

    Args:
        course_identifier: Course code or Canvas ID
        assignment_id: Canvas assignment ID
    
fetch_ufixit_reportB

Fetch UFIXIT accessibility report from Canvas course pages.

    Args:
        course_identifier: Course code or Canvas ID
        page_title: Title of the UFIXIT report page (default: "UFIXIT")
    
parse_ufixit_violationsA

Parse UFIXIT report content to extract accessibility violations.

    Args:
        report_json: JSON string from fetch_ufixit_report
    
format_accessibility_summaryA

Format parsed violations into a human-readable summary.

    Args:
        violations_json: JSON string from parse_ufixit_violations
    
scan_course_content_accessibilityA

Scan Canvas course content for basic accessibility issues.

    Args:
        course_identifier: Course code or Canvas ID
        content_types: Comma-separated types to scan: pages, assignments, discussions, syllabus
    
fix_accessibility_issuesA

Auto-fix accessibility issues in Canvas course content.

    Applies automated fixes for issues flagged as auto_fixable by the scanner.
    Run scan_course_content_accessibility first to see what will be fixed.
    Default is dry_run=True (preview only). Set dry_run=False to apply changes.

    Args:
        course_identifier: Course code or Canvas ID
        fix_types: Comma-separated fix types to apply:
            th_scope - Add scope="col" to <th> without scope
            low_contrast - Fix white text on #ff5f05 orange backgrounds
            legacy_designplus - Migrate kl_ classes to dp- equivalents
            redundant_alt_prefix - Remove "image of" prefix from alt text
        content_types: Comma-separated types to fix: pages, assignments
        dry_run: If True, preview changes without applying. Set False to apply.
    
execute_typescriptA

Execute TypeScript code in a Node.js environment with access to Canvas API.

    IMPORTANT: This achieves 99.7% token savings for bulk operations!
    Code runs in a sandboxed Node.js environment with Canvas API credentials,
    all TypeScript modules in src/canvas_mcp/code_api/, and standard Node.js modules.

    IMPORTANT: Security is best-effort unless container sandboxing is available.
    Code runs in a temp file (deleted after), with optional network allowlist,
    timeout, memory, and CPU limits.

    Args:
        code: TypeScript code to execute; can import from './canvas/*' modules.
        timeout: Max execution time in seconds (default: 120).
    
list_code_api_modulesA

List all available TypeScript modules in the code execution API.

    Shows importable TypeScript files for execute_typescript, organized by
    category with descriptions. Use to discover available bulk operations.
    
get_anonymization_statusA

Get current data anonymization status and statistics.

list_groupsA

List all groups and their members for a specific course.

    Args:
        course_identifier: Course code or Canvas ID
    
list_usersA

List users enrolled in a specific course.

    Args:
        course_identifier: Course code or Canvas ID
    
get_student_analyticsA

Get per-student engagement analytics: page views, participations, and on-time/late/missing assignment counts.

    Uses Canvas's /analytics/student_summaries endpoint to return a ranked table of every
    student in the course with an engagement score (0-100) useful for identifying disengaged
    students in participation/presentation-driven courses.

    Args:
        course_identifier: Course code or Canvas ID
        include_participation: Include participation counts (default: True)
        include_assignment_stats: Include on-time/late/missing counts (default: True)
        include_access_stats: Include page view counts (default: True)
        sort_by: Sort order — "engagement_score" (default, ascending), "page_views", "participations", or "name"
    
create_student_anonymization_mapB

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

    Args:
        course_identifier: Course code or Canvas ID
    

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