CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Canvas Mcp

vishalsachdev/canvas-mcp
14313 toolsSTDIOregistry active
Summary

A solid bridge to Canvas LMS with 88 tools split across student, educator, and learning designer workflows. Students pull assignments and grades, educators manage modules and bulk-grade submissions, and designers run WCAG accessibility audits with 20-check scanners. The standout is execute_typescript for custom bulk operations when built-in tools hit their limits, plus role-based filtering so students don't see educator tools. Works with Claude Desktop and 40+ MCP clients. If you're building Canvas workflows or need programmatic access to courses, modules, pages, and submissions without writing direct API calls, this covers the surface area.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

13 tools
get_coursesRetrieve all available Canvas courses for the current user. Returns a dictionary mapping course names to their corresponding IDs.

Retrieve all available Canvas courses for the current user. Returns a dictionary mapping course names to their corresponding IDs.

No parameter schema in public metadata yet.

get_modulesRetrieve all modules within a specific Canvas course.1 params

Retrieve all modules within a specific Canvas course.

Parameters* required
course_idstring
The unique identifier for the Canvas course. Can be found in the course URL or via get_courses.
get_module_itemsRetrieve all items within a specific module in a Canvas course.2 params

Retrieve all items within a specific module in a Canvas course.

Parameters* required
course_idstring
The unique identifier for the Canvas course. Can be found in the course URL or via get_courses.
module_idstring
The unique identifier for the module within the course. Can be found via get_modules.
get_file_urlGet the direct download URL for a file stored in Canvas.2 params

Get the direct download URL for a file stored in Canvas.

Parameters* required
file_idstring
The unique identifier for the file. Can be found in module items or file listings.
course_idstring
The unique identifier for the Canvas course. Can be found in the course URL or via get_courses.
get_course_assignmentsRetrieve all assignments for a specific Canvas course.2 params

Retrieve all assignments for a specific Canvas course.

Parameters* required
bucketstring
Optional filter for assignment status. Valid values: past, overdue, undated, ungraded, unsubmitted, upcoming, future.
course_idstring
The unique identifier for the Canvas course. Can be found in the course URL or via get_courses.
get_assignments_by_course_nameRetrieve all assignments for a Canvas course using its name.2 params

Retrieve all assignments for a Canvas course using its name.

Parameters* required
bucketstring
Optional filter for assignment status. Valid values: past, overdue, undated, ungraded, unsubmitted, upcoming, future.
course_namestring
The name of the course to search for. Partial matches are supported (e.g., 'Biology' will match 'Introduction to Biology').
get_canvas_coursesAlias for get_courses - retrieve all Canvas courses.

Alias for get_courses - retrieve all Canvas courses.

No parameter schema in public metadata yet.

get_gradescope_coursesRetrieve all Gradescope courses for the current user.

Retrieve all Gradescope courses for the current user.

No parameter schema in public metadata yet.

get_gradescope_course_by_nameFind a Gradescope course by name.1 params

Find a Gradescope course by name.

Parameters* required
course_namestring
The name of the Gradescope course to search for. Partial matches are supported.
get_gradescope_assignmentsRetrieve all assignments for a Gradescope course.1 params

Retrieve all assignments for a Gradescope course.

Parameters* required
course_idstring
The unique identifier for the Gradescope course. Can be found via get_gradescope_courses or get_gradescope_course_by_name.
get_gradescope_assignment_by_nameFind a Gradescope assignment by name.2 params

Find a Gradescope assignment by name.

Parameters* required
course_idstring
The unique identifier for the Gradescope course. Can be found via get_gradescope_courses or get_gradescope_course_by_name.
assignment_namestring
The name of the assignment to search for. Partial matches are supported.
get_cache_statsGet cache statistics for debugging purposes. Returns hit/miss counts and cache size.

Get cache statistics for debugging purposes. Returns hit/miss counts and cache size.

No parameter schema in public metadata yet.

clear_cacheClear all cached data. Use this if you need fresh data from Canvas or Gradescope.

Clear all cached data. Use this if you need fresh data from Canvas or Gradescope.

No parameter schema in public metadata yet.

Canvas MCP — AI tools for Canvas LMS

Canvas MCP Server

License: MIT skills.sh

MCP server for Canvas LMS with 90 tools and 8 agent skills. Works with Claude Desktop, Cursor, Codex, Windsurf, and 40+ other agents.

npx skills add vishalsachdev/canvas-mcp

For AI Agents

Canvas MCP provides 90 tools for interacting with Canvas LMS. Tools are organized by user type:

Student Tools (click to expand)
ToolPurposeExample Prompt
get_my_upcoming_assignmentsDue dates for next N days"What's due this week?"
get_my_todo_itemsCanvas TODO list"Show my TODO list"
get_my_submission_statusSubmitted vs missing"Have I submitted everything?"
get_my_course_gradesCurrent grades"What are my grades?"
get_my_peer_reviews_todoPending peer reviews"What peer reviews do I need to do?"
Educator Tools (click to expand)
ToolPurposeExample Prompt
list_assignmentsAll assignments in course"Show assignments in BADM 350"
create_assignmentCreate new assignment"Create an assignment due Jan 26 with online text submission"
update_assignmentUpdate existing assignment"Change the due date for Assignment 3 to Feb 15"
list_submissionsStudent submissions"Who submitted Assignment 3?"
bulk_grade_submissionsGrade multiple at once"Grade these 10 students"
get_assignment_analyticsPerformance stats"Show analytics for Quiz 2"
send_conversationMessage students"Message students who haven't submitted"
create_announcementPost announcements"Announce the exam date change"
Module Management
create_moduleCreate course module"Create a module for Week 5"
update_moduleUpdate module settings"Rename the midterm module"
add_module_itemAdd content to module"Add the syllabus page to Week 1"
delete_moduleRemove a module"Delete the empty test module"
Page & Content
create_pageCreate course page"Create a page for office hours"
edit_page_contentUpdate page content"Update the syllabus page"
update_page_settingsPublish/unpublish pages"Publish all Week 3 pages"
bulk_update_pagesBatch page operations"Unpublish all draft pages"
File Management
upload_course_fileUpload local file to Canvas"Upload syllabus.pdf to the course"
Shared Tools (click to expand)
ToolPurpose
list_coursesAll enrolled courses
get_course_detailsCourse info + syllabus
list_pagesCourse pages
get_page_contentRead page content
list_modulesList course modules
list_module_itemsItems within a module
list_discussion_topicsDiscussion forums
list_discussion_entriesPosts in a discussion
post_discussion_entryAdd a discussion post
reply_to_discussion_entryReply to a post
Learning Designer Tools (course design & QC)
ToolPurposeExample Prompt
get_course_structureFull module→items tree as JSON"Show me the structure of CS 101"
scan_course_content_accessibilityWCAG violation scanner (20 checks: headings, tables, links, contrast, alt text, captions, DesignPLUS)"Audit accessibility for BADM 350"
fetch_ufixit_reportInstitutional accessibility report"Pull the UFIXIT report for this course"
parse_ufixit_violationsExtract structured violations"Parse the UFIXIT violations"
format_accessibility_summaryReadable violation report"Summarize the accessibility issues"

Skills: canvas-course-qc (pre-semester audit), canvas-accessibility-auditor (WCAG compliance), canvas-course-builder (scaffold courses from specs/templates).

Developer Tools (for bulk operations)
ToolPurposeWhen to Use
search_canvas_toolsDiscover code API operationsFinding available bulk ops
execute_typescriptRun TypeScript locally30+ items, custom logic, 99.7% token savings

Decision tree: Simple query → MCP tools. Batch grading (10+) → bulk_grade_submissions. Complex bulk (30+) → execute_typescript.

Quick Reference

Course identifiers: Canvas ID (12345), course code (badm_350_120251_246794), or SIS ID

Cannot do: Create/delete courses, modify course settings, access other users' data, create/update rubrics (use Canvas UI)

Rate limits: ~700 requests/10 min. Use max_concurrent=5 for bulk operations.

Full documentation: AGENTS.md | tools/TOOL_MANIFEST.json | tools/README.md

Overview

The Canvas MCP Server bridges the gap between AI assistants and Canvas Learning Management System, providing both students and educators with an intelligent interface to their Canvas environment. Built on the Model Context Protocol (MCP), it enables natural language interactions with Canvas data through any MCP-compatible client.

Latest Release: v1.4.0

Released: June 2026 | Full Changelog | All Releases

  • check_enrollment — data-minimizing "is this NetID enrolled in the course?" check; returns only a yes/no plus minimal metadata, never the roster (teacher-scoped, PR #126)
  • Claude Desktop Extension (.mcpb) — one-click install in Claude Desktop (no terminal, no config-file editing); attached to each GitHub Release
  • Authenticated institutional hosting — Microsoft Entra ID (Azure AD) platform authentication for in-tenant App Service deployments (#115, PR #125)
  • Security — HTTP mode now fails closed without an auth gate configured (PR #123)
Previous releases

v1.3.0 — create_rubric (PR #100), read_course_file (@DomBarker99, PR #90), event-loop fix for user-scoped tools (PR #99), bulk-delete safety cap (PR #96), dependency pruning (PR #93)

v1.2.0 — Role-Based Tool Filtering (@Promithius-DR, PR #84), Accessibility Remediation (fix_accessibility_issues, scanner expanded 4→20 checks), Security Hardening (path traversal/symlink protections), Windows Support for execute_typescript (PR #85), CI consolidation (11→8 checks)

v1.1.0 — Hosted Server (mcp.illinihunt.org), Learning Designer tools + 3 skills, Agent Skills on skills.sh, File Management (@Metzpapa, PR #75), Token Optimization, Generic Distribution

v1.0.8 — Security Hardening (PII sanitization, audit logging, sandbox-by-default), Ruff linting, 235+ tests

v1.0.7 — Assignment Update Tool (update_assignment), complete CRUD, 9 tests

v1.0.6 — Module Management (7 tools), Page Settings (2 tools), 235+ tests

v1.0.5 — Claude Code Skills, GitHub Pages site

v1.0.4 — Code Execution API (99.7% token savings), Bulk Operations, MCP 2.14 compliance

For Students 👨‍🎓

Get AI-powered assistance with:

  • Tracking upcoming assignments and deadlines
  • Monitoring your grades across all courses
  • Managing peer review assignments
  • Accessing course content and discussions
  • Organizing your TODO list

→ Get Started as a Student

For Educators 👨‍🏫

Enhance your teaching with:

  • Assignment and grading management
  • Student analytics and performance tracking
  • Discussion and peer review facilitation
  • FERPA-compliant student data handling
  • Bulk messaging and communication tools

→ Get Started as an Educator

For Learning Designers 🎨

AI-powered course design and quality assurance:

  • Course scaffolding — Build entire course structures from specs, templates, or by cloning existing courses
  • Quality audits — Pre-semester QC checks for structure, content, publishing, and completeness
  • Accessibility compliance — 20-check WCAG scanner (headings, tables, scope, contrast, alt text, links, captions, DesignPLUS migration), prioritized reports, guided remediation, and verification
  • Course structure analysis — Full module→items tree in a single call for rapid course review

3 dedicated skills (canvas-course-qc, canvas-accessibility-auditor, canvas-course-builder) plus the get_course_structure tool.

🤖 Agent Skills

Pre-built workflow recipes that teach AI agents how to use Canvas MCP tools effectively. Available for 40+ coding agents via skills.sh, or as Claude Code-specific slash commands.

Install via skills.sh (Any Agent)

npx skills add vishalsachdev/canvas-mcp

This launches an interactive picker to install skills into your agent of choice (Claude Code, Cursor, Codex, OpenCode, Cline, Zed, and many more).

SkillForWhat It Does
canvas-week-planStudentsWeekly planner: due dates, submission status, grades, peer reviews
canvas-morning-checkEducatorsCourse health dashboard: submission rates, struggling students, deadlines
canvas-bulk-gradingEducatorsGrading decision tree: single → bulk → code execution with safety checks
canvas-peer-review-managerEducatorsFull peer review pipeline: analytics, quality analysis, reminders, reports
canvas-discussion-facilitatorBothDiscussion browsing, participation monitoring, replying, facilitation
canvas-course-qcLearning DesignersPre-semester quality audit: structure, content, publishing, completeness
canvas-accessibility-auditorLearning DesignersWCAG scan, prioritized report, guided remediation, verification
canvas-course-builderLearning DesignersScaffold courses from specs, templates, or existing courses

Install a specific skill:

npx skills add vishalsachdev/canvas-mcp -s canvas-week-plan

Claude Code Slash Commands

If you use Claude Code, the same workflows are also available as slash commands:

You: /canvas-morning-check CS 101
Claude: [Generates comprehensive course status report]

You: /canvas-week-plan
Claude: [Shows prioritized weekly assignment plan]

Claude Code skills are located in .claude/skills/ and can be customized for your workflow.

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

🔒 Privacy & Data Protection

For Educators: FERPA Compliance

Complete FERPA compliance through systematic data anonymization when working with student data:

  • Source-level data anonymization converts real names to consistent anonymous IDs (Student_xxxxxxxx)
  • Automatic email masking and PII filtering from discussion posts and submissions
  • Local-only processing with configurable privacy controls (ENABLE_DATA_ANONYMIZATION=true)
  • FERPA-compliant analytics: Ask "Which students need support?" without exposing real identities
  • De-anonymization mapping tool for faculty to correlate anonymous IDs with real students locally

All student data is anonymized before it reaches AI systems. See Educator Guide for configuration details.

For Students: Your Data Stays Private

  • Your data only: Student tools access only your own Canvas data via Canvas API's "self" endpoints
  • No credential storage: In hosted mode, your Canvas token is sent as an HTTP header per-request and never stored on the server. In local mode, everything runs on your machine.
  • No tracking: Your Canvas usage and AI interactions remain private
  • No anonymization needed: Since you're only accessing your own data, there are no privacy concerns

Hosted Server (Retired)

The public hosted server (mcp.illinihunt.org) has been retired. A public MCP endpoint without an access gate isn't safe to operate — it would expose the built-in code-execution tool — so the supported path is local installation below.

The HTTP/streamable transport itself remains fully supported for self-hosting behind your own authentication (canvas-mcp-server --transport streamable-http). An authenticated institutional deployment is planned (#115).


Prerequisites (Local Installation)

  • Python 3.10+ - Required for modern features and type hints
  • Canvas API Access - API token and institution URL
  • MCP Client - Any MCP-compatible client (Claude Desktop, Cursor, Zed, Windsurf, Continue, etc.)

Supported MCP Clients

Works with any MCP-compatible client: Claude Desktop, Cursor, Zed, Windsurf, Continue, Replit, Copilot Studio, and more.

Canvas MCP is compliant with Canvas LMS API 2024-2026 requirements (User-Agent header, per_page pagination). Works with Canvas Cloud and self-hosted instances.

Install as a Claude Desktop Extension (easiest)

If you use Claude Desktop, you can install Canvas MCP with one click — no terminal, no config-file editing:

  1. Download canvas-mcp.mcpb from the latest release.
  2. Double-click the file (or drag it into Claude Desktop → Settings → Extensions).
  3. When prompted, enter your Canvas API URL (e.g. https://canvas.youruniversity.edu) and your Canvas API token (Canvas → Account → Settings → New Access Token). The token is stored in your OS keychain.

The extension runs the server locally and calls Canvas with your own token — every action runs under your own Canvas role and audit trail. Requires Python 3.10+ (the bundled runtime manages dependencies automatically). For other clients, or to run from source, use the manual setup below.

Local Installation

1. Install Dependencies

# (Recommended) Use a dedicated virtualenv so the MCP binary is in a stable location
python3 -m venv .venv
. .venv/bin/activate

# Install the package editable
pip install -e .

2. Configure Environment

# Copy environment template
cp env.template .env

# Edit with your Canvas credentials
# Required: CANVAS_API_TOKEN, CANVAS_API_URL

Get your Canvas API token from: Canvas → Account → Settings → New Access Token

Note for Students: Some educational institutions restrict API token creation for students. If you see an error like "There is a limit to the number of access tokens you can create" or cannot find the token creation option, contact your institution's Canvas administrator or IT support department to request API access or assistance in creating a token.

3. MCP Client Configuration

Canvas MCP works with any MCP-compatible client. Below are configuration examples for popular clients:

Claude Desktop (Most Popular)

Configuration file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Configuration:

{
  "mcpServers": {
    "canvas-api": {
      "command": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}

Note: Use the absolute path to your virtualenv binary to avoid issues with shell-specific PATH entries (e.g., pyenv shims).

Cursor

Configuration file location:

  • macOS/Linux: ~/.cursor/mcp_config.json
  • Windows: %USERPROFILE%\.cursor\mcp_config.json

Configuration:

{
  "mcpServers": {
    "canvas-api": {
      "command": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}
Zed

Configuration: Add to Zed's settings.json (accessible via Settings menu)

{
  "context_servers": {
    "canvas-api": {
      "command": {
        "path": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server",
        "args": []
      }
    }
  }
}
Windsurf IDE

Configuration file location:

  • macOS: ~/Library/Application Support/Windsurf/mcp_config.json
  • Windows: %APPDATA%\Windsurf\mcp_config.json

Configuration:

{
  "mcpServers": {
    "canvas-api": {
      "command": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}
Continue

Configuration: Add to Continue's config.json (accessible via Continue settings)

{
  "mcpServers": {
    "canvas-api": {
      "command": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}
Other MCP Clients

For other MCP-compatible clients, the general pattern is:

  1. Locate your client's MCP configuration file
  2. Add a server entry with:
    • Server name: canvas-api (or any name you prefer)
    • Command: Full path to canvas-mcp-server binary
    • Optional args: Additional arguments if needed

Consult your client's MCP documentation for specific configuration format and file locations.

Windows users: Replace forward slashes with backslashes in paths (e.g., C:\Users\YourName\canvas-mcp\.venv\Scripts\canvas-mcp-server.exe)

Verification

Test your setup:

# Test Canvas API connection
canvas-mcp-server --test

# View configuration
canvas-mcp-server --config

# Start server (for manual testing)
canvas-mcp-server

Available Tools

The Canvas MCP Server provides a comprehensive set of tools for interacting with the Canvas LMS API. These tools are organized into logical categories for better discoverability and maintainability.

Tool Categories

Student Tools (New!)

  • Personal assignment tracking and deadline management
  • Grade monitoring across all courses
  • TODO list and peer review management
  • Submission status tracking

Shared Tools (Both Students & Educators)

  1. Course Tools - List and manage courses, get detailed information, generate summaries with syllabus content
  2. Discussion & Announcement Tools - Manage discussions, announcements, and replies
  3. Page & Content Tools - Access pages, modules, and course content

Educator Tools 4. Assignment Tools - Handle assignments, submissions, and peer reviews with analytics 5. Rubric Tools - List rubrics, associate with assignments, and grade submissions (including bulk_grade_submissions for efficient batch grading). Note: Create/update rubrics via Canvas web UI due to API limitations. 6. User & Enrollment Tools - Manage enrollments, users, and groups 7. Analytics Tools - View student analytics, assignment statistics, and progress tracking 8. Messaging Tools - Send messages and announcements to students

Developer Tools 9. Discovery Tools - Search and explore available code execution API operations with search_canvas_tools and list_code_api_modules 10. Code Execution Tools - Execute TypeScript code with execute_typescript for token-efficient bulk operations (99.7% token savings!)

📖 View Full Tool Documentation for detailed information about all available tools.

Code Execution API

For bulk operations (30+ items), Canvas MCP supports TypeScript code execution with 99.7% token savings compared to traditional tool calling.

ApproachBest ForToken Cost
MCP toolsSimple queries, small datasetsNormal
bulk_grade_submissionsBatch grading 10-29 itemsLow
execute_typescript30+ items, custom logic99.7% less

Use search_canvas_tools to discover available operations, then execute_typescript to run them locally. Code runs in a secure sandbox by default (network blocked, env filtered, resource limits). Works on macOS, Linux, and Windows.

Code execution examples and security details

Bulk Grading Example

import { bulkGrade } from './canvas/grading/bulkGrade';

await bulkGrade({
  courseIdentifier: "60366",
  assignmentId: "123",
  gradingFunction: (submission) => {
    const notebook = submission.attachments?.find(f =>
      f.filename.endsWith('.ipynb')
    );
    if (!notebook) return null;
    return { points: 100, comment: "Great work!" };
  }
});

Security Modes

ModeConfigWhat It Does
Local sandbox (default)None neededTimeout 120s, memory 512MB, network blocked, env filtered
Container sandboxTS_SANDBOX_MODE=containerFull filesystem isolation via Docker/Podman
No sandboxENABLE_TS_SANDBOX=falseFull local access (not recommended)

See Bulk Grading Example for a detailed walkthrough.

Usage

MCP clients start the server automatically. Just ask naturally:

  • "What's due this week?" / "Show my grades" / "What peer reviews do I need?"
  • "Who hasn't submitted Assignment 3?" / "Send reminders to missing students"

Quick start guides: Student | Educator | Real-World Workflows | Troubleshooting

Documentation

  • Tool Documentation — Complete reference for all 90 tools
  • Student Guide — Getting started as a student
  • Educator Guide — FERPA compliance and educator workflows
  • Bulk Grading Example — Token-efficient batch grading walkthrough
  • Development Guide — Architecture and contributing
Technical details

Built on FastMCP with async httpx, pydantic validation, and python-dotenv configuration. Modern src/ layout with pyproject.toml. Full type hints, connection pooling, smart pagination, and rate limiting. 328 tests. ruff + black for code quality.

Troubleshooting

If you encounter issues:

  1. Server Won't Start - Verify your Local Installation setup: .env file, virtual environment path, and dependencies
  2. Authentication Errors - Check your Canvas API token validity and permissions
  3. Connection Issues - Verify Canvas API URL correctness and network access
  4. Debugging - Check your MCP client's console logs (e.g., Claude Desktop's developer console) or run server manually for error output

Security

Four layers of runtime security, all enabled by default:

LayerDefault
PII sanitization in logsLOG_REDACT_PII=true
Token validation on startupAlways on
Structured audit loggingOpt-in: LOG_ACCESS_EVENTS=true
Sandboxed code executionENABLE_TS_SANDBOX=true

FERPA-compliant anonymization for educators: ENABLE_DATA_ANONYMIZATION=true. See Educator Guide for details.

Publishing

Published to PyPI, MCP Registry, and skills.sh (agent skills). Releases are automated via GitHub Actions — tag a version (git tag vX.Y.Z && git push origin vX.Y.Z) and CI handles the rest.

Contributing

Contributions are welcome! Feel free to:

  • Submit issues for bugs or feature requests
  • Create pull requests with improvements
  • Share your use cases and feedback

Contributors

Thanks to everyone who has contributed to Canvas MCP:

  • @DomBarker99 — read_course_file tool for remote MCP deployments (#90)
  • @Promithius-DR — Role-based tool filtering and tool annotations (#84)
  • @Metzpapa — File download and listing tools (#75)
  • @JCSnap — Student tool bug fixes (#72, #73)

License

This project is licensed under the MIT License - see the LICENSE file for details.


Created by Vishal Sachdev

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Categories
Design & CreativeMonitoring & Observability
Registryactive
Packagecanvas-mcp
TransportSTDIO
UpdatedMay 2, 2026
View on GitHub

Related Design & Creative MCP Servers

View all →
HTML to Figma — Design System

miapre/html-to-figma-design-system

Translate HTML prototypes into Figma using your design system's real components and tokens.
3
Illustrator Mcp Server

ie3jp/illustrator-mcp-server

Read, manipulate, and export Adobe Illustrator design data. 26 tools. macOS | Windows.
44
Godot

coding-solo/godot-mcp

MCP server for interfacing with Godot game engine. Provides tools for launching the editor, running projects, and capturing debug output.
3.7k
Unity Mcp

ivanmurzak/unity-mcp

Make 3D games in Unity Engine with AI. MCP Server + Plugin for Unity Editor and Unity games.
3.1k
Excalidraw

yctimlin/mcp_excalidraw

Provides an Excalidraw canvas exposed via MCP for real-time diagramming and element CRUD from AI agents.
1.9k
Figma MCP Server

figma/mcp-server-guide

The Figma MCP server brings Figma design context directly into your AI workflow.
1.6k