Skip to content

Releases: vishalsachdev/canvas-mcp

v1.0.7 - File Upload Support

21 Jan 05:08

Choose a tag to compare

What's New

File Upload Tool 📁

New upload_course_file tool enables uploading files from the local filesystem to Canvas courses.

Features

  • Canvas 3-step upload protocol - Handles the complete upload flow transparently
  • Comprehensive validation - File existence, readability, size limits (100MB), extension whitelist
  • MIME type detection - Automatic content-type detection from file extension
  • Filename sanitization - Cleans special characters for safe Canvas storage
  • Security-first - Whitelist approach blocks potentially dangerous file types

Usage Example

# Upload a PDF to Canvas
upload_course_file("CS101", "/path/to/syllabus.pdf")
# → "✅ Uploaded! File ID: 12345, Name: syllabus.pdf"

# Then add to a module
add_module_item("CS101", module_id, "File", content_id=12345)

# Or attach to a message
send_conversation("CS101", ["student_id"], "Subject", "Body", attachment_ids=["12345"])

Parameters

  • course_identifier - Course code or ID
  • file_path - Local filesystem path to upload
  • folder_path (optional) - Canvas folder destination
  • display_name (optional) - Override filename in Canvas
  • on_duplicate - "rename" (default) or "overwrite"

New Files

  • src/canvas_mcp/core/file_validation.py - Validation utilities
  • src/canvas_mcp/tools/files.py - Upload tool implementation
  • tests/tools/test_files.py - 33 unit tests

Testing

  • 33 new tests for file upload functionality
  • 183 total tests passing

Full Changelog: v1.0.6...v1.0.7

v1.0.5 - Claude Code Skills & Documentation Website

25 Dec 22:57

Choose a tag to compare

What's New

🎯 Claude Code Skills

Pre-built workflows that combine multiple tools into one-command actions:

Skill For Description
/canvas-morning-check Educators Course health check: submission rates, struggling students, grade distribution, upcoming deadlines
/canvas-week-plan Students Weekly planner: all due dates, submission status, grades, peer reviews across courses

🌐 GitHub Pages Website

Beautiful documentation site at vishalsachdev.github.io/canvas-mcp

  • Modern dark theme with teal accent
  • Responsive design
  • Full HTML documentation for Students, Educators, and Developers
  • Skills showcase with "Request a Skill" feature

📖 HTML Documentation


Want a custom skill? Submit a request describing your repetitive workflow!

Full Changelog: v1.0.4...v1.0.5

v1.0.4 - Major Performance & Feature Update

10 Nov 01:09

Choose a tag to compare

Canvas MCP v1.0.4

🚀 Major Features

Code Execution Environment

  • TypeScript code execution API for token-efficient bulk operations (99.7% token savings)
  • Execute custom TypeScript code for complex Canvas operations
  • Dramatically reduces token usage for batch processing

New MCP Tools

  • bulk_grade_submissions - Efficient batch grading with optional rubric assessment
  • bulk_grade_discussions - Token-efficient discussion grading API
  • search_canvas_tools - Discover available MCP tools dynamically

✨ Improvements

  • MCP 2.10 Compliance - Updated FastMCP to >=2.10.0
  • Structured Logging - Standardized error handling and logging
  • Flexible Grading - Rubric assessment now optional for simple grading scenarios
  • GitHub Actions Integration - Automated workflows and chat session exports
  • Enhanced Validation - Added validation for maxPeerReviewPoints configuration

🐛 Fixes

  • Improved error handling with direct API calls
  • Concurrent processing optimization
  • Better validation and feedback

📚 Documentation

  • Complete documentation for all new tools
  • Code execution examples
  • Bulk operations guides

Token Efficiency: The new code execution environment can reduce token usage by 99.7% for bulk operations compared to traditional tool-based approaches.

v1.0.3 - Critical Fix: grade_with_rubric

17 Oct 17:57

Choose a tag to compare

Critical Bug Fix

This release fixes a critical bug in the grade_with_rubric tool that prevented grades from being saved to the Canvas gradebook.

Fixed

🔧 grade_with_rubric now works correctly

The tool was completely non-functional due to incorrect API data format. Canvas requires form-encoded parameters with bracket notation, but the tool was sending JSON.

Changes:

  • ✅ Changed parameter type from string to dict[str, Any] - no more JSON parsing errors
  • ✅ Added form data encoding with Canvas bracket notation (rubric_assessment[criterion_id][points]=value)
  • ✅ Added pre-flight validation to check if rubric is configured for grading (use_for_grading=true)
  • ✅ Enhanced error messages with actionable fix instructions
  • ✅ Updated documentation with clear examples and format specifications

Before: Canvas accepted requests but silently failed to save grades
After: Grades are properly saved to gradebook with validation checks

Breaking Change

The rubric_assessment parameter format has changed:

Old format (broken):

{
  "rubric_assessment": "{\"_8027\": {\"points\": 2}}"
}

New format (working):

{
  "rubric_assessment": {
    "_8027": {
      "points": 2,
      "rating_id": "blank",
      "comments": "Great work!"
    }
  }
}

Impact

If you were using grade_with_rubric before this release:

  • ❌ Grades were NOT being saved (tool was non-functional)
  • ✅ Now grades will be saved correctly
  • ⚠️ You'll need to update your code to use the new dict format

Additional Notes

The tool now validates that the rubric is properly configured before attempting to grade. If use_for_grading is false, you'll receive a clear error message with instructions to fix the configuration.


Full Changelog: v1.0.2...v1.0.3