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

Server capabilities have not been inspected yet.

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.

    This tool submits grades for individual rubric criteria. The rubric must already be
    associated with the assignment and configured for grading (use_for_grading=true).

    IMPORTANT NOTES:
    - Criterion IDs often start with underscore (e.g., "_8027")
    - Use list_assignment_rubrics or get_rubric_details to find criterion IDs and rating IDs
    - Points must be within the range defined by the rubric criterion
    - The rubric must be attached to the assignment before grading

    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: Dict mapping criterion IDs to assessment data
                         Format: {
                           "criterion_id": {
                             "points": <number>,           # Required: points awarded
                             "rating_id": "<string>",      # Optional: specific rating ID
                             "comments": "<string>"        # Optional: feedback comments
                           }
                         }
        comment: Optional overall comment for the submission

    Example Usage:
        {
          "course_identifier": "60366",
          "assignment_id": "1440586",
          "user_id": "9824",
          "rubric_assessment": {
            "_8027": {
              "points": 2,
              "rating_id": "blank",
              "comments": "Great work!"
            }
          },
          "comment": "Nice job on this assignment"
        }
    
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)
    
bulk_grade_submissions

Grade multiple submissions efficiently with concurrent processing.

    This tool applies grades to multiple student submissions in batches, reducing the
    number of individual API calls needed. It supports both rubric-based grading and
    simple point-based grading.

    IMPORTANT: This is the most efficient way to grade bulk submissions!
    Token savings: Processing submissions in batches without loading all data into context.

    Args:
        course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
        assignment_id: The Canvas assignment ID
        grades: Dictionary mapping user IDs to grade information
               Format: {
                 "user_id": {
                   "rubric_assessment": {...},  # Optional: rubric-based grading
                   "grade": <number>,           # Optional: simple grade
                   "comment": "<string>"        # Optional: feedback comment
                 }
               }
        dry_run: If True, analyze but don't actually submit grades (for testing)
        max_concurrent: Maximum concurrent grading operations (default: 5)
        rate_limit_delay: Delay between batches in seconds (default: 1.0)

    Example Usage - Rubric Grading:
        {
          "course_identifier": "60366",
          "assignment_id": "1440586",
          "grades": {
            "9824": {
              "rubric_assessment": {
                "_8027": {"points": 100, "comments": "Excellent work!"}
              },
              "comment": "Great job!"
            },
            "9825": {
              "rubric_assessment": {
                "_8027": {"points": 75, "comments": "Good work"}
              }
            }
          },
          "dry_run": true
        }

    Example Usage - Simple Grading:
        {
          "course_identifier": "60366",
          "assignment_id": "1440586",
          "grades": {
            "9824": {"grade": 100, "comment": "Perfect!"},
            "9825": {"grade": 85, "comment": "Very good"}
          }
        }
    
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
    
get_my_upcoming_assignments

Get your upcoming assignments across all courses.

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

    Returns upcoming assignments due within the specified timeframe,
    sorted by due date, with submission status.
    
get_my_submission_status

Get your submission status for assignments.

    Args:
        course_identifier: Optional course code or ID to filter by specific course.
                         If not provided, shows all courses.

    Returns your submission status across assignments, highlighting missing submissions.
    
get_my_course_grades

Get your current grades across all enrolled courses.

Returns your current grade, enrollment status, and recent performance for each active course.

get_my_todo_items

Get your Canvas TODO list.

Returns all items in your Canvas TODO list including assignments, quizzes, and discussions that need your attention.

get_my_peer_reviews_todo

Get peer reviews you need to complete.

    Args:
        course_identifier: Optional course code or ID to filter by specific course

    Returns list of peer reviews assigned to you that need completion.
    
fetch_ufixit_report

Fetch UFIXIT accessibility report from Canvas course pages.

    UFIXIT reports are typically stored as Canvas pages. This tool fetches
    the report content for further analysis.

    Args:
        course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
        page_title: Title of the page containing the UFIXIT report (default: "UFIXIT")

    Returns:
        JSON string with report content or error message
    
parse_ufixit_violations

Parse UFIXIT report content to extract accessibility violations.

    Takes the output from fetch_ufixit_report and extracts structured
    violation data for analysis and remediation.

    Args:
        report_json: JSON string from fetch_ufixit_report containing the report

    Returns:
        JSON string with parsed violations and summary statistics
    
format_accessibility_summary

Format parsed violations into a human-readable summary.

    Args:
        violations_json: JSON string from parse_ufixit_violations

    Returns:
        Formatted text summary of accessibility violations
    
scan_course_content_accessibility

Scan Canvas course content for basic accessibility issues.

    This provides a lightweight alternative to UFIXIT by scanning course
    content directly for common accessibility problems.

    Args:
        course_identifier: The Canvas course code or ID
        content_types: Comma-separated list of content types to scan
                      (pages, assignments, discussions, syllabus)

    Returns:
        JSON string with detected accessibility issues
    
search_canvas_tools
    Search available Canvas code API tools by keyword.

    Use this to discover what Canvas operations are available in the code API.
    Search by keyword (e.g., "grading", "assignment", "discussion") to find
    relevant tools.

    Args:
        query: Search term to filter tools. Empty string returns all tools.
        detail_level: How much information to return:
            - "names": Just file paths (most efficient)
            - "signatures": File paths + function signatures (recommended)
            - "full": Complete file contents (use sparingly)

    Returns:
        JSON string with matching tools

    Examples:
        - search_canvas_tools("grading", "signatures")
          → Find all grading-related tools with signatures
        - search_canvas_tools("", "names")
          → List all available tools (just names)
        - search_canvas_tools("bulk", "full")
          → Get full details of bulk operation tools
    
execute_typescript

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

    This tool enables token-efficient bulk operations by executing code locally
    rather than loading all data into Claude's context. The code runs in a
    sandboxed Node.js environment with access to:
    - Canvas API credentials from environment
    - All TypeScript modules in src/canvas_mcp/code_api/
    - Standard Node.js modules

    IMPORTANT: This achieves 99.7% token savings for bulk operations!

    Args:
        code: TypeScript code to execute. Can import from './canvas/*' modules.
        timeout: Maximum execution time in seconds (default: 120)

    Example Usage - Bulk Grading:
        ```typescript
        import { bulkGrade } from './canvas/grading/bulkGrade.js';

        await bulkGrade({
          courseIdentifier: "60366",
          assignmentId: "123",
          gradingFunction: (submission) => {
            // This runs locally - no token cost!
            const notebook = submission.attachments?.find(
              f => f.filename.endsWith('.ipynb')
            );

            if (!notebook) return null;

            // Your grading logic here
            return {
              points: 100,
              rubricAssessment: { "_8027": { points: 100 } },
              comment: "Great work!"
            };
          }
        });
        ```

    Returns:
        Combined stdout and stderr from the execution, or error message if failed.

    Security:
        - Code runs in a temporary file that is deleted after execution
        - Inherits Canvas API credentials from server environment
        - Timeout enforced to prevent runaway processes
    
list_code_api_modules

List all available TypeScript modules in the code execution API.

    Returns a formatted list of all TypeScript files that can be imported
    in the execute_typescript tool, organized by category with descriptions.

    This helps Claude discover what operations are available for token-efficient
    bulk processing.

    Returns:
        Formatted string listing all available modules by category with descriptions.
    

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