a fancy canvas mcp server!
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

docs: update readme

+1 -32
+1 -32
README.md
··· 1 1 # Canvas MCP Server 2 2 3 - A proper MCP (Model Context Protocol) server that connects Canvas LMS to AI assistants like Claude Desktop. 4 - 5 - ## Features 6 - 7 - - **Proper MCP Protocol**: Implements Streamable HTTP transport with JSON-RPC 8 - - **Personal Access Token Auth**: Students set up in 2 minutes (no admin access needed) 9 - - **Multi-Institution Support**: Works with any Canvas instance 10 - - **Encrypted Storage**: Canvas tokens encrypted at rest with AES-256-GCM 11 - - **Session Persistence**: Sessions survive server restarts (stored in SQLite) 12 - - **Built with Bun**: Fast, modern TypeScript using `@modelcontextprotocol/sdk` 3 + This is a stream http transport Canvas LMS mcp server. A nice fancy bit of goblygook that just means its a remote integration you can plug into chatgpt, claude, poke, or anywhere else that supports mcp. If you want to try the hosted version its over at [canvas.dunkirk.sh](https://canvas.dunkirk.sh) or feel free to self host! 13 4 14 5 ## Quick Start 15 6 ··· 30 21 31 22 Visit `http://localhost:3000` to connect your Canvas account. 32 23 33 - ## How It Works 34 - 35 - 1. **Web Interface**: Students enter Canvas domain + Personal Access Token 36 - 2. **Verification**: Server validates token by calling Canvas API 37 - 3. **Token Storage**: Canvas token encrypted and stored server-side 38 - 4. **MCP Token**: User receives an MCP connection token for their AI client 39 - 5. **MCP Protocol**: AI client connects to `/mcp` endpoint with Bearer token 40 - 6. **Canvas Proxy**: Server proxies tool calls to Canvas using stored token 41 - 42 24 ## MCP Tools 43 25 44 26 - `list_courses`: List Canvas courses with enrollment filtering ··· 62 44 } 63 45 ``` 64 46 65 - ## Architecture 66 - 67 - - **MCP Server**: `@modelcontextprotocol/sdk` with Streamable HTTP transport 68 - - **Web Dashboard**: Bun.serve with HTML/CSS/JS (no frameworks) 69 - - **Database**: SQLite with encrypted Canvas tokens and persistent sessions 70 - - **Transport**: JSON-RPC over HTTP POST at `/mcp` endpoint 71 - 72 47 ## Security 73 48 74 49 - Canvas tokens encrypted with AES-256-GCM before storage 75 50 - MCP tokens hashed with Argon2id (cannot be retrieved after creation) 76 - - Sessions stored in database (survive restarts) 77 - - HTTPS enforced in production 78 51 - No Canvas tokens exposed to MCP clients 79 - 80 - ## Deployment 81 - 82 - Deployed at: `https://canvas.dunkirk.sh` 83 52 84 53 The canonical repo is hosted on tangled at [`knot.dunkirk.sh/canvas-mcp`](https://tangled.org/knot.dunkirk.sh/canvas-mcp) 85 54