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 Lms Mcp

bruchris/canvas-lms-mcp
3authSTDIOregistry active
Summary

A comprehensive Canvas LMS integration with 116 tools spanning courses, assignments, submissions, gradebook history, rubrics, quizzes, New Quizzes (LTI), files, discussions, modules, calendar events, and conversations. You get both read and write operations: list courses and assignments, grade submissions with comments, assess rubrics, manage enrollments, post discussion entries, create modules and pages, send messages. Includes outcome tracking for accreditation workflows and gradebook audit trails. Ships with a setup wizard that detects your AI clients and validates credentials, plus reusable workflow skills for at-risk student detection and outcome mastery tracking. Reach for this when you need deep Canvas automation beyond basic queries, especially for grading, course management, or administrative reporting.

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 →

Canvas LMS MCP Server

The TypeScript MCP server for Canvas LMS.

CI npm License: MIT Node npm downloads MCP Registry

MCP server for Canvas LMS. Read courses, assignments, submissions, rubrics, quizzes; grade, comment, manage course content, and handle Canvas admin workflows from any AI agent.

119 tools across Canvas courses, assignments, submissions, gradebook history, rubrics, quizzes, New Quizzes (LTI), files, users, groups, enrollments, discussions, modules, pages, calendar, conversations, peer reviews, accounts, analytics, outcomes, student workflows, dashboard, instructor attention workflows, and health checks. Three deployment modes: stdio, HTTP, and library import.

One-click install (Claude Desktop)

  1. Download canvas-lms-mcp.mcpb from the latest release.
  2. Double-click the file (or drag it into Claude Desktop's Extensions settings).
  3. When prompted, paste your Canvas API token and Canvas API base URL (e.g. https://school.instructure.com/api/v1). Teachers and staff handling student data can also flip FERPA mode — pseudonymize students on in the same dialog (what it does).

No terminal, no Node.js install, no config-file editing — Claude Desktop bundles the runtime and handles config for you. The same .mcpb works in Claude Code and MCP for Windows.

Prefer the terminal? Use the Quick Start below.

Comparison

canvas-lms-mcpvishalsachdev/canvas-mcpDMontgomery40/mcp-canvas-lms
LanguageTypeScriptPythonTypeScript
Tools11980+54
LicenseLicense: MITLicenseLicense
Last commitLast commitLast commitLast commit

Quick Start

1. Get a Canvas API Token

  1. Log in to your Canvas instance
  2. Go to Account > Settings
  3. Scroll to Approved Integrations and click + New Access Token
  4. Give it a name (e.g., "MCP Server") and click Generate Token
  5. Copy the token immediately -- you won't see it again

2. Run the Setup Wizard

npx canvas-lms-mcp init

The wizard detects your installed AI clients (Claude Desktop, Cursor, VS Code, Windsurf, Codex, Continue, Claude Code), prompts for your Canvas token and base URL, validates the credentials against your Canvas instance, and writes the config for every client you select.

add-mcp is also supported as a generic alternative: npx add-mcp canvas-lms-mcp.

For clients not yet supported by the wizard, or if you prefer editing config files by hand, see docs/manual-setup.md.

Agent Skills

Install reusable Canvas workflows into Claude Code, Cursor, GitHub Copilot, Cline, and 40+ other AI agents:

npx skills add bruchris/canvas-lms-mcp
SkillDescription
canvas-at-risk-studentsSurface students with missing assignments or declining grades and send targeted outreach
canvas-gradebook-auditInspect the full grade-change audit trail — who changed what grade, when, and by how much
canvas-outcome-trackerTrack learning outcome mastery and class-wide proficiency for accreditation and program review

Skills are markdown workflow files (no extra dependencies). They work with the MCP server you already have installed. See the skills/ directory for the full list.

Example Prompts

Once configured, try these prompts with your AI client:

  • "List all my active courses"
  • "Show me the assignments for course 12345"
  • "What's the average grade on the midterm exam?"
  • "Grade Alice's essay submission with a B+ and add feedback"
  • "Show me the rubric for the final project"
  • "What discussions are happening in my Biology course?"
  • "List all upcoming calendar events for course 12345"
  • "Send a message to student 67890 about their missing assignment"

Tool Inventory

All Registered Tools (119)

CategoryTools
Healthhealth_check
Courseslist_courses, get_course, get_syllabus, create_course, update_course
Assignmentslist_assignments, get_assignment, list_assignment_groups, create_assignment, update_assignment, delete_assignment
Submissionslist_submissions, get_submission, grade_submission, comment_on_submission
Rubricslist_rubrics, get_rubric, get_rubric_assessment, submit_rubric_assessment
Quizzeslist_quizzes, get_quiz, list_quiz_submissions, list_quiz_questions, get_quiz_submission_answers, score_quiz_question
New Quizzes (LTI)create_new_quiz, update_new_quiz, delete_new_quiz, list_new_quiz_items, get_new_quiz_item, create_new_quiz_item, update_new_quiz_item, delete_new_quiz_item
Fileslist_files, list_folders, get_file, upload_file, delete_file
Gradebook Historylist_gradebook_history_days, get_gradebook_history_day, list_gradebook_history_submissions, get_gradebook_history_feed
Userslist_students, get_user, get_profile, search_users, list_course_users
Groupslist_groups, list_group_members
Enrollmentslist_enrollments, enroll_user, remove_enrollment
Discussionslist_discussions, get_discussion, list_announcements, post_discussion_entry, create_discussion, update_discussion, delete_discussion
Moduleslist_modules, get_module, list_module_items, get_course_structure, view_course_structure, create_module, update_module, create_module_item
Pageslist_pages, get_page, create_page, update_page, delete_page
Calendarlist_calendar_events, create_calendar_event, update_calendar_event
Conversationslist_conversations, get_conversation, get_conversation_unread_count, send_conversation
Peer Reviewslist_peer_reviews, get_submission_peer_reviews, create_peer_review, delete_peer_review
Accountsget_account, list_accounts, list_sub_accounts, list_account_courses, list_account_users, get_account_reports
Analyticssearch_course_content, get_course_analytics, get_student_analytics, get_course_activity_stream
Outcomesget_root_outcome_group, list_outcome_groups, list_outcome_group_links, get_outcome_group, list_outcome_group_outcomes, list_outcome_group_subgroups, get_outcome, get_outcome_alignments, get_outcome_results, get_outcome_rollups, get_outcome_contributing_scores, get_outcome_mastery_distribution
Studentget_my_courses, get_my_grades, get_my_submissions, get_my_upcoming_assignments
Dashboardget_dashboard_cards, get_todo_items, get_upcoming_events, get_missing_submissions
Attentionlist_submission_comments_needing_attention, list_students_needing_attention
FERPA (conditional)resolve_pseudonym — registered only when CANVAS_PSEUDONYMIZE_STUDENTS=true

84 tools are read-only and 35 tools perform Canvas write operations. When FERPA mode is enabled, resolve_pseudonym adds a 120th read tool.

All write tools require appropriate Canvas permissions. Canvas enforces its own permission model -- the MCP server does not bypass it.

Bulk operations

Canvas applies rate limits per-user. When creating many New Quizzes items (e.g., RAG-generated quizzes), call the tools serially rather than in parallel. For >50 items, chunk and pause between batches. If you hit a rate-limit error, wait a few seconds and retry.

MCP Resources (2)

ResourceURI TemplateType
Course Syllabuscanvas://course/{courseId}/syllabustext/html
Assignment Descriptioncanvas://course/{courseId}/assignment/{assignmentId}/descriptiontext/html

Interactive widgets

view_course_structure is an MCP Apps tool: hosts that support the spec render an interactive tree explorer (collapsible modules, type-filter chips, title search, published/unpublished badges, links open in a new tab); hosts that don't fall back transparently to the same JSON payload that get_course_structure returns. The widget is self-contained — no external scripts, fonts, or network calls — and is shipped inline with the tool definition.

ToolUI resource URIFallback
view_course_structureui://canvas-lms-mcp/course-structure.htmlSame JSON payload as get_course_structure

Host verification (Claude Desktop, ChatGPT, Codex fallback) is performed manually after each release, since it requires real Canvas credentials. A screenshot will be added once the first verified host pass lands.

Deployment Modes

stdio (Default)

For local AI clients like Claude Desktop, Cursor, and VS Code. The server communicates over stdin/stdout.

npx canvas-lms-mcp --token $CANVAS_API_TOKEN --base-url $CANVAS_BASE_URL

HTTP

For web-based clients or hosted services. Starts an HTTP server with Streamable HTTP transport.

npx canvas-lms-mcp serve \
  --token $CANVAS_API_TOKEN \
  --base-url $CANVAS_BASE_URL \
  --port 3001 \
  --allowed-origin https://your-app.example.com

Endpoints:

  • POST /mcp -- MCP protocol endpoint
  • GET /health -- Health check (returns {"status":"ok"})

Docker

docker compose up -d

Requires CANVAS_API_TOKEN and CANVAS_BASE_URL environment variables. See docker-compose.yml.

services:
  canvas-lms-mcp:
    build: .
    ports:
      - "3001:3001"
    environment:
      - CANVAS_API_TOKEN=${CANVAS_API_TOKEN}
      - CANVAS_BASE_URL=${CANVAS_BASE_URL}

Library Import

Use the server factory directly in your own Node.js application:

import { createCanvasMCPServer } from 'canvas-lms-mcp'

const { server, canvas } = createCanvasMCPServer({
  token: userToken,
  baseUrl: canvasBaseUrl,
})

Or use the Canvas client standalone (no MCP dependency):

import { CanvasClient } from 'canvas-lms-mcp/canvas'

const canvas = new CanvasClient({
  token: userToken,
  baseUrl: canvasBaseUrl,
})

const courses = await canvas.courses.list()

CLI Reference

FlagEnv VariableDefaultDescription
--tokenCANVAS_API_TOKEN(required)Canvas personal access token
--base-urlCANVAS_BASE_URL(required)Canvas instance URL
serve--stdio modeSwitch to HTTP mode
--port--3001HTTP server port
--allowed-originCANVAS_ALLOWED_ORIGINhttp://localhost:3000CORS allowed origin
--roleCANVAS_ROLE(all tools)Filter tools by Canvas role: student, teacher, or admin (see Role-based tool filtering)

Environment Variables

VariableRequiredDescription
CANVAS_API_TOKENYesCanvas personal access token
CANVAS_BASE_URLYesCanvas instance URL (e.g., https://school.instructure.com)
CANVAS_ALLOWED_ORIGINNoCORS origin for HTTP mode (default: http://localhost:3000)
CANVAS_ROLENoFilter the tool list by role: student, teacher, or admin (see Role-based tool filtering)
CANVAS_PSEUDONYMIZE_STUDENTSNoSet to true to enable FERPA mode
CANVAS_PSEUDONYMIZE_REVERSE_LOOKUPNoSet to true (with CANVAS_PSEUDONYMIZE_STUDENTS=true) to register the resolve_pseudonym audit tool
CANVAS_PSEUDONYM_DIRNoAbsolute path that overrides the default pseudonym map directory
CANVAS_PSEUDONYM_AUDIT_LOGNoPath to an append-only file that mirrors resolve_pseudonym audit lines (stderr is always written)

FERPA mode (student pseudonymization)

Opt-in, server-side mode that replaces student names and contact info in tool output with stable pseudonyms (Student 1, Student 2, …) so structured PII never reaches the LLM. Designed for teacher / staff tokens — students running their own MCP should leave the flag off, otherwise their own data is replaced too.

CANVAS_PSEUDONYMIZE_STUDENTS=true canvas-lms-mcp serve --base-url https://school.instructure.com

What it does:

  • Replaces name, short_name, sortable_name, email, login_id, sis_user_id, integration_id, avatar_url, bio, pronouns, and last_login on student users.
  • Maps are stable per (canvas-base-url, course_id) and persisted to disk under ${XDG_DATA_HOME:-~/.local/share}/canvas-lms-mcp/pseudonyms (Linux), ~/Library/Application Support/canvas-lms-mcp/pseudonyms (macOS), or %APPDATA%\canvas-lms-mcp\pseudonyms (Windows). Override the location with CANVAS_PSEUDONYM_DIR.
  • Student 7 in March is still Student 7 in October. Dropped students are marked historical; their slot is never reused.
  • Tool responses carry _meta.pseudonymized: true so the agent can mention it in summaries.
  • Cannot be toggled per tool call, per HTTP header, or per session. The env flag is the only switch.

What it does NOT do:

  • It does not scrub free text inside submission bodies, discussion messages, or page bodies — a student writing "Hi, I'm Alice" in their submission still says so. Document this for your end users.
  • It cannot re-anonymize the LLM's working memory. If the agent saw real names in a prior turn, they remain in its context.
  • It does not protect the bare canvas-lms-mcp/canvas library import — pseudonymization is a tool-layer concern. Embedders that use the raw Canvas client get raw data.
  • HTTP transports are process-wide: to run both modes side by side, run two server instances.

Conversation participants are pseudonymized as Person N from a cross-course pool. If you chat with a colleague, they appear as Person 1 rather than their name — conservative because conversations span courses and we cannot infer their role.

Optional resolve_pseudonym reverse-lookup tool: register it only by also setting CANVAS_PSEUDONYMIZE_REVERSE_LOOKUP=true. Every call is audit-logged to stderr (and to CANVAS_PSEUDONYM_AUDIT_LOG if set). When the flag is off the tool is absent from tools/list — a prompt-injection attempt to call it fails at the protocol layer.

Threat model and design rationale in docs/superpowers/specs/2026-05-25-ferpa-pseudonymization.md.

Role-based tool filtering

Optionally narrow the tool list to a single Canvas role so an agent sees only the tools relevant to its user. This is a client-side UX / context-reduction filter only — Canvas still enforces real permissions server-side. Setting CANVAS_ROLE=admin does not grant admin powers; a 403 still comes from Canvas if the token lacks the scope.

# stdio: env var or --role flag (flag wins)
CANVAS_ROLE=student canvas-lms-mcp --base-url https://school.instructure.com
canvas-lms-mcp --base-url https://school.instructure.com --role teacher

Three roles, plus the default of "unset = every tool":

CANVAS_ROLETools exposedTypical use
(unset)all (~121)default; backwards-compatible
student~46a student's own courses, grades, submissions, and read-only course content
teacher~104grading, roster, content authoring, analytics
admin~116everything teacher sees plus account-level tools (enroll_user, list_account_users, …)

Notes:

  • Equivalent to CANVAS_ROLE in vishalsachdev/canvas-mcp — set the same value to migrate.
  • Role values are case-insensitive; all is accepted as an explicit "no filter". An unrecognised value logs a warning to stderr and registers all tools (a config typo never stops the server).
  • teacher / admin do not see the student-only get_my_* tools in v1 — they should use list_submissions / get_submission etc. instead.
  • The FERPA resolve_pseudonym tool is teacher/admin-only and is never exposed to student, even when reverse lookup is enabled.
  • HTTP transport: the role is read per request from the X-Canvas-Role header, falling back to CANVAS_ROLE from the server config. A valid header (or all) overrides the configured default; an invalid header is ignored with a warning.
  • Tool counts above are a snapshot and grow as tools are added — the authoritative guarantee is that every tool resolves to exactly one audience (enforced by tests/tools/audience-coverage.test.ts).

Design rationale in BRU-1530 (role taxonomy, why three roles, auto-detect deferred to v2).

Development

pnpm install       # Install dependencies
pnpm dev           # Watch mode build
pnpm build         # Production build
pnpm test          # Run tests (768 tests)
pnpm lint          # ESLint + Prettier check
pnpm lint:fix      # Auto-fix lint issues
pnpm typecheck     # TypeScript strict type check

Dependency audit

The pnpm.overrides.hono entry pins hono to 4.12.14 because @modelcontextprotocol/sdk@1.29.0 allows vulnerable hono <4.12.14 versions. Remove the override when the MCP SDK publishes a release that depends on a patched hono range.

Architecture

src/canvas/       Standalone Canvas REST API client (pure fetch, no MCP dependency)
src/tools/        MCP tool definitions with Zod input schemas
src/resources/    MCP resource templates (syllabus, assignment description)
src/server.ts     Factory: createCanvasMCPServer(config)
src/stdio.ts      stdio transport entry point
src/http.ts       HTTP transport entry point
src/cli.ts        CLI argument parser

Contributing

See CONTRIBUTING.md for the full contribution and validation workflow.

  1. Fork the repo
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Use conventional commits (feat:, fix:, chore:, test:, docs:)
  4. Ensure pnpm lint && pnpm typecheck && pnpm test pass
  5. Open a pull request

Guides

  • Manual Setup -- Per-client JSON/TOML config snippets for Claude Desktop, Cursor, VS Code, Windsurf, Codex, Continue, Claude Code, and HTTP clients
  • Getting Started -- Step-by-step setup for non-developers: token, config, first query, troubleshooting
  • Student Guide -- Token setup, AI client configuration, 10 example prompts
  • Educator Guide -- Grading workflows, write operations, privacy considerations
  • Integration Guide -- Three integration patterns with code examples
  • Agent Discovery -- Generated tool/workflow manifests and workflow-pack index
  • Educator Assignment Review Workflow -- Read-first grading flow with write-safety guidance
  • Student Weekly Planning Workflow -- Read-only weekly planning sequence for students

License

MIT

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 →

Configuration

CANVAS_API_TOKEN*secret

Canvas personal access token (Account → Settings → Approved Integrations → New Access Token)

CANVAS_BASE_URL*

Canvas instance API URL, e.g. https://school.instructure.com/api/v1

Categories
Design & Creative
Registryactive
Packagecanvas-lms-mcp
TransportSTDIO
AuthRequired
UpdatedJun 4, 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