Skip to main content
Glama
README.md18.7 kB
# Canvas MCP Tools Documentation This document provides a comprehensive overview of all tools available in the Canvas MCP Server, organized by audience and functionality. ## Table of Contents - [Student Tools](#student-tools) - [Educator Tools](#educator-tools) - [Shared Tools](#shared-tools-both-students--educators) - [Developer Tools](#developer-tools) - [Tool Usage Guidelines](#tool-usage-guidelines) --- ## Student Tools These tools provide students with personal academic tracking and organization capabilities using Canvas API's "self" endpoints. ### Personal Organization #### `get_my_upcoming_assignments` Get your upcoming assignments across all enrolled courses. **Parameters:** - `days` (optional): Number of days to look ahead (default: 7) **Example:** ``` "What assignments do I have due this week?" "Show me what's due in the next 3 days" ``` **Returns:** List of assignments due within timeframe, sorted by due date, with submission status. --- #### `get_my_todo_items` Get your Canvas TODO list including assignments, quizzes, and discussions. **Example:** ``` "Show me my Canvas TODO list" "What do I need to do?" ``` **Returns:** All items requiring your attention with due dates and course information. --- #### `get_my_submission_status` Check your submission status across assignments. **Parameters:** - `course_identifier` (optional): Specific course code or ID to filter **Example:** ``` "Have I submitted everything?" "Show me my submission status for BADM 350" "What haven't I turned in yet?" ``` **Returns:** Submitted and missing assignments, with overdue items flagged. --- ### Academic Performance #### `get_my_course_grades` View your current grades across all enrolled courses. **Example:** ``` "What are my current grades?" "Show me how I'm doing in all my courses" ``` **Returns:** Current grade, percentage, and enrollment status for each course. --- ### Peer Review Management #### `get_my_peer_reviews_todo` List peer reviews you need to complete. **Parameters:** - `course_identifier` (optional): Filter by specific course **Example:** ``` "What peer reviews do I need to complete?" "Show me my pending peer reviews for ENGL 101" ``` **Returns:** Incomplete peer reviews with assignment and course information. --- ## Educator Tools These tools provide instructors and TAs with course management, grading, analytics, and communication capabilities. ### Assignment Management #### `list_assignments` List all assignments for a course. **Parameters:** - `course_identifier`: Course code (e.g., "badm_350_120251_246794") or ID **Example:** ``` "Show me all assignments in BADM 350" "List assignments for my Spring 2025 course" ``` --- #### `get_assignment_details` Get detailed information about a specific assignment. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID **Example:** ``` "Show me details for Assignment 3" ``` --- #### `list_submissions` View student submissions for an assignment. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID **Example:** ``` "Who has submitted Assignment 2 in BADM 350?" "Show me submissions for the latest assignment" ``` **Note:** Student data is anonymized if `ENABLE_DATA_ANONYMIZATION=true` in educator's `.env` file. --- #### `get_assignment_analytics` Get comprehensive performance analytics for an assignment. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID **Example:** ``` "Show me analytics for Assignment 3" "What's the submission rate for the final project?" ``` **Returns:** Submission statistics, grade distribution, completion rates, and performance metrics. --- ### Grading & Rubrics #### `create_rubric` Create a new grading rubric. **Parameters:** - `course_identifier`: Course code or ID - `title`: Rubric title - `criteria`: JSON array of rubric criteria **Example:** ``` "Create a rubric for the final project with criteria for content, organization, and citations" ``` --- #### `get_rubric_details` View rubric criteria and point values. **Parameters:** - `course_identifier`: Course code or ID - `rubric_id`: Rubric ID **Example:** ``` "Show me the rubric for Assignment 4" ``` --- #### `associate_rubric` Link a rubric to an assignment. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID - `rubric_id`: Rubric ID - `use_for_grading`: Boolean (true/false) --- #### `grade_submission_with_rubric` Grade a student submission using a rubric. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID - `user_id`: Student ID - `rubric_assessment`: JSON with criterion ratings --- #### `bulk_grade_submissions` Grade multiple submissions efficiently with concurrent processing. **Most efficient way for bulk grading!** **IMPORTANT:** This tool provides significant token savings by processing submissions in batches without loading all data into context. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID - `grades`: Dictionary mapping user IDs to grade information ```json { "user_id": { "rubric_assessment": {...}, // Optional: rubric-based grading "grade": <number>, // Optional: simple grade "comment": "<string>" // Optional: feedback comment } } ``` - `dry_run` (optional): If true, analyze but don't submit grades (default: false) - `max_concurrent` (optional): Maximum concurrent grading operations (default: 5) - `rate_limit_delay` (optional): Delay between batches in seconds (default: 1.0) **Example Usage - Rubric Grading:** ``` "Grade these 3 students using the rubric: - User 9824: 100 points for criterion _8027 with comment 'Excellent work!' - User 9825: 75 points for criterion _8027 with comment 'Good work' - User 9826: 50 points for criterion _8027 with comment 'Needs improvement'" ``` **Example Usage - Simple Grading:** ``` "Grade these submissions with simple points: - User 9824: 100 points, comment 'Perfect!' - User 9825: 85 points, comment 'Very good'" ``` **Returns:** Summary of grading operation including total submissions, successfully graded, failed attempts, and any error details. **Notes:** - Supports both rubric-based grading and simple point-based grading - Can mix and match grading styles for different students - Automatically validates rubric configuration before grading - Use `dry_run=true` to preview grades before applying - For maximum token efficiency with custom grading logic, consider using the `execute_typescript` tool with `bulkGrade` from the code execution API --- ### Student Analytics #### `get_student_analytics` Multi-dimensional student performance analysis. **Parameters:** - `course_identifier`: Course code or ID - `student_id` (optional): Specific student or all students **Example:** ``` "Show me student performance in BADM 350" "Analyze Student_abc123's progress" ``` **Returns:** Assignment completion, grade trends, participation, and risk indicators. --- ### Peer Review Management #### `list_peer_reviews` List all peer review assignments. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID **Example:** ``` "Show me peer review assignments for Assignment 2" ``` --- #### `get_peer_review_completion_analytics` Analyze peer review completion rates. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID **Example:** ``` "How many students completed peer reviews for Assignment 2?" "Show me peer review completion statistics" ``` **Returns:** Completion rates, incomplete reviews, and student-level breakdown. --- #### `get_peer_review_comments` Extract actual peer review comment text and metadata. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID **Example:** ``` "Show me peer review comments for Assignment 3" ``` --- #### `analyze_peer_review_quality` Comprehensive quality analysis of peer review comments. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID **Example:** ``` "Analyze the quality of peer reviews for Assignment 2" ``` **Returns:** Quality metrics including length, specificity, constructiveness, and patterns. --- #### `identify_problematic_peer_reviews` Flag low-quality peer reviews needing attention. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID **Example:** ``` "Which peer reviews need improvement?" ``` --- #### `assign_peer_review` Manually assign a peer review. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID - `reviewer_id`: Student who will review - `reviewee_id`: Student being reviewed --- ### Communication & Messaging #### `send_conversation` Send messages to students. **Parameters:** - `course_identifier`: Course code or ID - `recipients`: User IDs (array) - `subject`: Message subject - `body`: Message content **Example:** ``` "Message students who haven't submitted Assignment 3" ``` --- #### `send_peer_review_reminders` Automated peer review reminder workflow. **Parameters:** - `course_identifier`: Course code or ID - `assignment_id`: Assignment ID - `user_ids`: Students to remind (array) - `custom_message` (optional): Custom message template **Example:** ``` "Send reminders to students who haven't completed peer reviews" ``` --- #### `create_announcement` Post course announcements. **Parameters:** - `course_identifier`: Course code or ID - `title`: Announcement title - `message`: Announcement content **Example:** ``` "Create an announcement about tomorrow's exam" ``` --- ### Discussion Management #### `create_discussion_topic` Start a new discussion forum. **Parameters:** - `course_identifier`: Course code or ID - `title`: Discussion title - `message`: Initial post content --- #### `reply_to_discussion_entry` Respond to student discussion posts. **Parameters:** - `course_identifier`: Course code or ID - `topic_id`: Discussion topic ID - `entry_id`: Specific post ID - `message`: Your response **Example:** ``` "Reply to John's post in the Week 5 discussion" ``` --- ## Shared Tools (Both Students & Educators) These tools work for both audiences, providing access to course content and information. ### Course Management #### `list_courses` List all enrolled courses. **Example:** ``` "Show me my courses" "What courses am I enrolled in?" ``` --- #### `get_course_details` Get detailed course information including syllabus. **Parameters:** - `course_identifier`: Course code or ID **Example:** ``` "Show me the syllabus for BADM 350" "What's the course description for my Marketing class?" ``` --- ### Content Access #### `list_pages` List pages in a course. **Parameters:** - `course_identifier`: Course code or ID - `sort` (optional): Sort by title, created_at, or updated_at - `published` (optional): Filter by published status **Example:** ``` "Show me all pages in BADM 350" "List published pages for my course" ``` --- #### `get_page_content` Read the full content of a course page. **Parameters:** - `course_identifier`: Course code or ID - `page_url_or_id`: Page URL or ID **Example:** ``` "Show me the Week 1 Overview page" "Read the Course Policies page for HIST 202" ``` --- #### `get_page_details` Get detailed page metadata. **Parameters:** - `course_identifier`: Course code or ID - `page_url_or_id`: Page URL or ID --- ### Announcements #### `list_announcements` View course announcements. **Parameters:** - `course_identifier`: Course code or ID **Example:** ``` "Show me recent announcements" "What are the latest announcements in BADM 350?" ``` --- ### Discussions #### `list_discussion_topics` View discussion forums in a course. **Parameters:** - `course_identifier`: Course code or ID - `only_announcements` (optional): Filter for announcements only **Example:** ``` "What discussions are active in my course?" "Show me discussion topics for ENGL 101" ``` --- #### `get_discussion_topic_details` Get details about a specific discussion. **Parameters:** - `course_identifier`: Course code or ID - `topic_id`: Discussion topic ID --- #### `list_discussion_entries` View posts in a discussion. **Parameters:** - `course_identifier`: Course code or ID - `topic_id`: Discussion topic ID **Example:** ``` "Show me posts in the Week 5 discussion" ``` --- #### `get_discussion_entry_details` Read a specific discussion post. **Parameters:** - `course_identifier`: Course code or ID - `topic_id`: Discussion topic ID - `entry_id`: Post ID **Example:** ``` "Show me the first post in the introduction discussion" ``` --- #### `post_discussion_entry` Create a new discussion post. **Parameters:** - `course_identifier`: Course code or ID - `topic_id`: Discussion topic ID - `message`: Post content --- ## Developer Tools These tools help developers discover, explore, and execute Canvas code execution API operations. ### Tool Discovery #### `search_canvas_tools` Search and discover available Canvas code execution API operations by keyword. **Parameters:** - `query` (optional): Search term to filter tools. Empty string returns all tools. Examples: "grading", "assignment", "discussion", "bulk" - `detail_level` (optional): How much information to return. Default: "signatures" - `"names"`: Just file paths (most efficient for quick lookups) - `"signatures"`: File paths + function signatures + descriptions (recommended) - `"full"`: Complete file contents (use sparingly for detailed inspection) **Example:** ``` "Search for grading tools in the code API" "What bulk operations are available?" "Show me all code API tools" "Find discussion-related operations" ``` **Returns:** JSON with query, detail_level, count, and array of matching tools. **Usage Tips:** - Use empty query (`""`) to list all available tools - Use `"signatures"` detail level for most tasks (default) - Use `"names"` when you just need a quick overview - Use `"full"` only when you need to see complete implementation details **Example Direct Usage:** ```typescript // Search for grading-related tools with signatures search_canvas_tools("grading", "signatures") // List all available tools (names only) search_canvas_tools("", "names") // Get full implementation details for bulk operations search_canvas_tools("bulk", "full") ``` --- #### `list_code_api_modules` List all available TypeScript modules in the code execution API. **Parameters:** None **Example:** ``` "What TypeScript modules are available?" "List all code API modules" "Show me the available code execution operations" ``` **Returns:** Formatted list of all TypeScript files organized by category (grading, assignments, courses, discussions, etc.) with import paths. **Usage Tips:** - Use this for a quick overview of all available operations - Results show the exact import paths to use in `execute_typescript` - Organized by category for easy navigation --- ### Code Execution #### `execute_typescript` Execute TypeScript code in a Node.js environment with access to Canvas API credentials. **IMPORTANT:** This tool enables **99.7% token savings** for bulk operations by executing code locally rather than loading all data into Claude's context! **Parameters:** - `code`: TypeScript code to execute. Can import from './canvas/*' modules. - `timeout` (optional): Maximum execution time in seconds (default: 120) **Example:** ``` "Grade all 90 Jupyter notebook submissions using bulk grading" "Send reminders to all students who haven't submitted" "Analyze discussion participation across all students" ``` **Example Code:** ```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; return { points: 100, rubricAssessment: { "_8027": { points: 100 } }, comment: "Great work!" }; } }); ``` **Returns:** Combined stdout and stderr from 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 **Token Efficiency:** - **Traditional approach**: Loads all submissions into context (1.35M tokens for 90 submissions) - **Code execution approach**: Only summary results return (3.5K tokens = 99.7% savings!) **Usage Tips:** - First use `search_canvas_tools` or `list_code_api_modules` to discover available operations - Import operations from './canvas/*' paths (e.g., './canvas/grading/bulkGrade.js') - Processing happens locally - only results flow back to Claude's context - Best for bulk operations, large datasets, and complex analysis - Traditional tools still best for simple queries and small datasets --- ## Tool Usage Guidelines ### For Students 1. **Be specific**: Use course codes when possible (e.g., "BADM 350" instead of "my business class") 2. **Combine queries**: "Show me my grades and what's due this week" 3. **Check regularly**: Use for daily planning and weekly organization 4. **No setup needed**: Student tools access only your data - no special configuration required ### For Educators 1. **Enable anonymization**: Set `ENABLE_DATA_ANONYMIZATION=true` in `.env` for FERPA compliance 2. **Use course codes**: Be specific about which course (e.g., "badm_350_120251_246794") 3. **Leverage automation**: Use messaging and reminder tools for routine communications 4. **Combine analytics**: Request multiple analytics in one query for comprehensive insights 5. **Protect mapping files**: Keep `local_maps/` folder secure - never commit to version control ### General Best Practices - **Ask follow-up questions**: Claude remembers context within a conversation - **Request summaries**: "Summarize..." for quick overviews - **Be conversational**: Natural language works better than rigid commands - **Check tool output**: Review the data Claude retrieves before taking action ## Need Help? - **Student Guide**: [STUDENT_GUIDE.md](../docs/STUDENT_GUIDE.md) - **Educator Guide**: [EDUCATOR_GUIDE.md](../docs/EDUCATOR_GUIDE.md) - **Main README**: [README.md](../README.md) - **Development Guide**: [CLAUDE.md](../docs/CLAUDE.md) - **GitHub Issues**: [Report issues](https://github.com/vishalsachdev/canvas-mcp/issues)

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