Provides tools for interacting with the Canvas Learning Management System (LMS), allowing AI assistants to list courses with enrollment filtering, search for assignments across multiple courses, and retrieve detailed assignment information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Canvas MCP ServerWhat assignments do I have due this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Canvas MCP Server
A proper MCP (Model Context Protocol) server that connects Canvas LMS to AI assistants like Claude Desktop.
Features
Proper MCP Protocol: Implements Streamable HTTP transport with JSON-RPC
Personal Access Token Auth: Students set up in 2 minutes (no admin access needed)
Multi-Institution Support: Works with any Canvas instance
Encrypted Storage: Canvas tokens encrypted at rest with AES-256-GCM
Session Persistence: Sessions survive server restarts (stored in SQLite)
Built with Bun: Fast, modern TypeScript using
@modelcontextprotocol/sdk
Quick Start
Visit http://localhost:3000 to connect your Canvas account.
How It Works
Web Interface: Students enter Canvas domain + Personal Access Token
Verification: Server validates token by calling Canvas API
Token Storage: Canvas token encrypted and stored server-side
MCP Token: User receives an MCP connection token for their AI client
MCP Protocol: AI client connects to
/mcpendpoint with Bearer tokenCanvas Proxy: Server proxies tool calls to Canvas using stored token
MCP Tools
list_courses: List Canvas courses with enrollment filteringsearch_assignments: Search assignments across coursesget_assignment: Get detailed assignment information
Client Configuration
After connecting your Canvas account, add this to Claude Desktop config:
Architecture
MCP Server:
@modelcontextprotocol/sdkwith Streamable HTTP transportWeb Dashboard: Bun.serve with HTML/CSS/JS (no frameworks)
Database: SQLite with encrypted Canvas tokens and persistent sessions
Transport: JSON-RPC over HTTP POST at
/mcpendpoint
Security
Canvas tokens encrypted with AES-256-GCM before storage
MCP tokens hashed with Argon2id (cannot be retrieved after creation)
Sessions stored in database (survive restarts)
HTTPS enforced in production
No Canvas tokens exposed to MCP clients
Deployment
Deployed at: https://canvas.dunkirk.sh
The canonical repo is hosted on tangled at knot.dunkirk.sh/canvas-mcp