Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CANVAS_API_URL | Yes | The URL for your university's Canvas API (e.g., https://canvas.illinois.edu/api/v1) | |
| CANVAS_API_TOKEN | Yes | Your 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
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| summarize-course | Generate a summary of a Canvas course |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |