canvas-student-mcp
canvas-student-mcp
Der Canvas LMS MCP-Server, der auch funktioniert, wenn Ihre Schule API-Token deaktiviert.
Gibt Claude (oder jedem MCP-Client) Live-, schreibgeschützten Zugriff auf Ihr Canvas-Konto: Kurse, Syllabus, Aufgaben mit Abgabestatus, Noten, Ankündigungen, Module, Seiten, Dateien, Diskussionen, Quizze, To-dos und Kalender. Kombinieren Sie es mit einem Notion-Connector und archivieren Sie einen gesamten Kurs mit einem einzigen Prompt.
Warum ein weiterer Canvas MCP?
Es gibt bereits mehrere gute Canvas MCP-Server — vishalsachdev/canvas-mcp, DMontgomery40/mcp-canvas-lms, mtgibbs/canvas-lms-mcp und andere. Alle erfordern ein persönliches API-Token.
Hier ist das Problem: Viele Universitäten deaktivieren die Selbstbedienung-Token-Generierung für Studierende. Öffnen Sie Konto → Einstellungen und es gibt einfach keinen + Neues Zugriffstoken-Button. An diesen Schulen ist jeder token-basierte Server eine Sackgasse.
Dieser Server löst das mit Session-Cookie-Authentifizierung: Melden Sie sich in Ihrem Browser bei Canvas an, kopieren Sie einmal das Session-Cookie, und Sie sind verbunden. Die Canvas-Weboberfläche spricht mit demselben /api/v1 REST API mit diesem Cookie, sodass keine Admin-Richtlinie es blockieren kann, ohne Canvas selbst zu beschädigen.
Was das unter der Haube erfordert (und was die token-basierten Server nicht tun):
XSSI-Guard-Entfernung — Cookie-authentifizierte Canvas-Antworten sind mit
while(1);vorangestellt, was naive JSON-Parsing zerstörtLogin-Weiterleitungserkennung — Abgelaufene Sitzungen leiten zur Anmeldeseite weiter, anstatt 401 zurückzugeben; der Server fängt Weiterleitungen und Nicht-JSON-Bodies ab und sagt Ihnen genau, wie Sie aktualisieren sollen, anstatt kryptisch zu scheitern
Berechtigte Dateidownloads — Token-Sitzungen erhalten einen
verifier=-Parameter, der Datei-URLs selbstauthentifizierend macht; Cookie-Sitzungen nicht, daher müssen Downloads das Session-Cookie mitführen (Canvas antwortet sonst mit500). Weiterleitungen werden manuell verfolgt, sodass Anmeldeinformationen niemals an ein CDN weitergegeben werdenAblaufbewusste Fehler — Jeder Fehlermodus erklärt die Behebung in der Fehlermeldung selbst
Designprinzipien, die es über die Authentifizierung hinaus unterscheiden:
Schreibgeschützt von Grund auf. Jedes Tool ist ein GET. Der Server kann physisch keine Aufgaben einreichen, Diskussionen posten oder irgendetwas ändern – sicher für einen autonomen Agenten.
Kontexteffiziente Antworten. Canvas-API-Payloads sind enorm; jedes Tool kürzt auf die Felder, die ein LLM tatsächlich benötigt, konvertiert HTML in sauberen Text (unter Beibehaltung von Link-URLs) und begrenzt die Paginierung mit expliziten Kürzungshinweisen.
Klein und überprüfbar. Strenges TypeScript, drei Laufzeitabhängigkeiten (das MCP SDK, zod und
unpdffür PDF-Text). Sie können das Ganze lesen, bevor Sie es Ihrem Schulkonto anvertrauen.
Token-Authentifizierung wird weiterhin unterstützt, wenn Ihre Schule es erlaubt – das Cookie ist der Fallback, nicht der einzige Weg.
Related MCP server: canvas-parent-mcp
Werkzeuge (29)
Werkzeug | Beschreibung |
| Anmeldeinformationen überprüfen / Wer bin ich |
| Kurse mit aktueller Note (aktiv / abgeschlossen / alle) |
| Kursdetails + vollständiger Syllabus als Text |
| Aufgaben nach Fälligkeitsdatum mit Ihrem Abgabestatus; Bucket-Filter (bevorstehend, überfällig, …) |
| Vollständige Beschreibung, Bewertungsraster, Ihre Abgabe + Punktzahl |
| Notenübersicht über alle Kurse oder Aufschlüsselung pro Aufgabe für einen Kurs |
| Ankündigungen in aktiven Kursen oder einem Kurs / Datumsbereich |
| Kursinhaltsgliederung mit Elementen |
| Kurs-Wiki-Seiten, vollständiger Text |
| Kursdateien + temporäre Download-URLs |
| Diskussionsthemen und vollständige Threads |
| Quizze mit Fälligkeitsdaten, Zeitlimits, Versuche |
| Ihre To-do-Liste und bevorstehende Fristen |
| Ereignisse oder Aufgabenfristen in einem Datumsbereich |
| Canvas-Posteingang-Threads lesen — ohne sie als gelesen zu markieren |
| Bewerterkommentare und Bewertungsraster-Bewertungen zu Ihren Abgaben |
| Note nach Aufgabengruppe + Was-wäre-wenn-Rechner: "Was brauche ich in der Abschlussprüfung für eine Eins?" |
| Planer-Feed mit Neuaktivitätsmarkierungen und Abgabestatus |
| Text aus Kursdateien extrahieren — PDF, Word, PowerPoint, Excel, HTML, Klartext |
| Syllabus als Text, egal ob er in Canvas eingegeben oder als angehängte PDF/Word-Datei hochgeladen wurde |
| Ihre Gruppenmitgliedschaften |
| Modulabschlussstatus und was jedes Element noch erfordert |
| Ihnen zugewiesene Peer-Reviews |
| Einmaliger Markdown-Export eines gesamten Kurses — für Notion-Archivierung entwickelt |
| Verbindung diagnostizieren: welche Anmeldeinformationen, wo gespeichert, noch gültig? |
Drei davon sind hervorzuheben.
canvas_read_file verwandelt Kursmaterialien in lesbaren Text, was bewirkt, dass "Quiz mich über die Folien dieser Woche" oder "Was ist die Richtlinie für verspätete Abgaben" tatsächlich funktionieren. PDFs werden durch unpdf verarbeitet; Office-Formate werden im Repository selbst behandelt – .docx, .pptx und .xlsx sind ZIP-Container von XML, sodass ein kleiner ZIP-Reader über Node's integriertes zlib alle drei ohne Abhängigkeit abdeckt. canvas_read_syllabus baut darauf auf: Es erkennt, wenn ein Syllabus nur ein Dateilink ist, und liest stattdessen den Anhang, was der häufige Fall ist (2 der 3 getesteten Kurse). canvas_grade_breakdown implementiert beide Bewertungsmodelle von Canvas (gewichtet nach Gruppe und Gesamtpunktzahl), überprüft seine Arithmetik mit der von Canvas selbst gemeldeten Punktzahl und sagt Ihnen, wann Drop-Regeln oder nicht veröffentlichte Aufgabengruppen eine Prognose unzuverlässig machen – anstatt leise eine selbstbewusste falsche Zahl zurückzugeben. canvas_get_conversation übergibt auto_mark_as_read=false, sodass ein Agent, der Ihren Posteingang liest, Ihre Nachrichten nicht stillschweigend als gelesen markiert; dieses Verhalten wird an einem live ungelesenen Thread überprüft, nicht nur angenommen.
Siehe ROADMAP.md für das, was als nächstes geplant ist und warum Schreibvorgänge bewusst außerhalb des Rahmens liegen.
Schnellstart
Keine Installation erforderlich — npx holt es bei Bedarf:
npx canvas-student-mcpOder aus dem Quellcode:
git clone https://github.com/xmike04/canvas-student-mcp.git
cd canvas-student-mcp
npm install && npm run buildAnmeldeinformationen abrufen
Option A — API-Token (falls Ihre Schule es erlaubt): Canvas → Konto → Einstellungen → Genehmigte Integrationen → + Neues Zugriffstoken.
Option B — Session-Cookie (für eingeschränkte Schulen):
Melden Sie sich in einem beliebigen Browser bei Canvas Ihrer Schule an.
DevTools (
Cmd/Ctrl+Shift+I) → Netzwerk-Tab → aktualisierenKlicken Sie auf eine beliebige Anfrage an Ihre Canvas-Domain → Anfrage-Header → kopieren Sie den vollständigen
cookie:-Wert (oder nur dascanvas_session=...-Paar — dieses eine Cookie ist ausreichend)
Beide Anmeldeinformationen gewähren Lesezugriff auf Ihr Canvas-Konto. Behandeln Sie es wie ein Passwort.
Anmeldeinformationen speichern (macOS: Schlüsselbund verwenden)
MCP-Client-Konfigurationen sind Klartext-JSON. Auf macOS können Sie die Anmeldeinformationen vollständig daraus heraushalten:
security add-generic-password -s canvas-student-mcp -a cookie -w 'canvas_session=PASTE_VALUE_HERE' -UVerwenden Sie -a token anstelle von -a cookie für ein API-Token. Der Server überprüft zuerst Umgebungsvariablen, dann den Schlüsselbund, sodass dies optional ist und nichts kaputt geht, wenn Sie es überspringen. CANVAS_NO_KEYCHAIN=1 deaktiviert die Suche.
Bei Claude registrieren
Claude Code — mit den Anmeldeinformationen im Schlüsselbund enthält die Konfiguration überhaupt kein Geheimnis:
claude mcp add canvas --scope user \
--env CANVAS_BASE_URL=https://yourschool.instructure.com \
-- npx -y canvas-student-mcpAnmeldeinformationen inline übergeben anstatt den Schlüsselbund zu verwenden:
claude mcp add canvas --scope user \
--env 'CANVAS_COOKIE=canvas_session=PASTE_VALUE_HERE' \
--env CANVAS_BASE_URL=https://yourschool.instructure.com \
-- npx -y canvas-student-mcpClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/absolute/path/to/canvas-student-mcp/dist/index.js"],
"env": {
"CANVAS_COOKIE": "canvas_session=PASTE_VALUE_HERE",
"CANVAS_BASE_URL": "https://yourschool.instructure.com"
}
}
}
}Verwenden Sie CANVAS_API_TOKEN anstelle von CANVAS_COOKIE für die Token-Authentifizierung (Token gewinnt, wenn beide gesetzt sind). Überprüfen Sie mit: "Überprüfe mein Canvas-Profil."
Wenn das Cookie abläuft (Ihre Browsersitzung endet), teilt Ihnen jedes Tool deutlich mit — kopieren Sie es erneut und aktualisieren Sie die Konfiguration. Wenn "Angemeldet bleiben" aktiviert ist, halten Sitzungen normalerweise Wochen.
Agentenfähigkeiten
Drei gepackte Workflows werden in skills/ ausgeliefert. Kopieren Sie einen davon in ~/.claude/skills/ (oder in das .claude/skills/ Ihres Projekts) und Claude wird sie automatisch verwenden, wenn die Anfrage passt:
Fähigkeit | Beschreibung |
| Tägliches Briefing: Was fällig ist, neue Ankündigungen, ungelesene Nachrichten, neue Noten |
| Liest die tatsächlichen Aufgaben und erstellt einen Tag-für-Tag-Plan für die Woche |
| Notenstand plus Was-wäre-wenn-Antworten, mit den durchgeführten Einschränkungen |
cp -R skills/canvas-morning-check ~/.claude/skills/Dinge, die Sie nach der Verbindung fragen können
"Was ist in den nächsten zwei Wochen in all meinen Kursen fällig?"
"Was ist meine aktuelle Note in jedem Kurs und welche Aufgaben fehlen mir?"
"Fasse die Ankündigungen dieser Woche aus all meinen Kursen zusammen."
"Exportiere meinen BIOL 1710-Kurs und archiviere ihn in meinen Notion-Schulordner." (mit einem Notion-Connector)
"Lies die Seite 'Woche 3' in meinem Geschichtskurs und frage mich dazu ab."
Architekturnotizen
stdio-Transport, zustandslos — ein Prozess pro Clientsitzung, keine Ports, keine Telemetrie, kein Speicher. Daten fließen Canvas → dieser Prozess → Ihr MCP-Client, nirgendwo anders.
Auto-Paginierung folgt Canvas
Link: rel="next"-Headern, begrenzt auf 5 Seiten × 100 Elemente mit expliziten Kürzungshinweisen, damit der Agentenkontext begrenzt bleibt.HTML → Text-Konvertierung für Syllabi, Beschreibungen, Ankündigungen und Seiten — strukturelle Tags werden zu Zeilenumbrüchen/Aufzählungspunkten, Links werden zu
text (url).Zod-Eingabeschemata für jedes Tool; MCP-Annotationen (
readOnlyHint) durchgängig deklariert.
Entwicklung
npm run build # strict TypeScript compile
npm test # smoke test: MCP handshake, all 30 tools register, error pathsDer Smoke-Test läuft vollständig offline — CI benötigt kein Canvas-Konto und setzt CANVAS_NO_KEYCHAIN=1, sodass keine echten gespeicherten Anmeldedaten in einen Testlauf gelangen können.
Veröffentlichung
Die Veröffentlichung erfolgt über CI (.github/workflows/release.yml), sodass niemand von einem Laptop aus veröffentlicht:
npm version minor && git push --follow-tagsDas Pushen des Tags löst einen Build, die vollständige Testsuite, eine Prüfung des Paketinhalts und eine Sicherung aus, dass der Tag mit package.json übereinstimmt — dann wird mit Provenienz veröffentlicht, die das veröffentlichte Tarball kryptografisch mit dem Commit und dem Workflow verbindet, der es erstellt hat. Die manuelle Ausführung des Workflows über den Reiter "Actions" führt alles außer der Veröffentlichung als Trockentest durch.
Sicherheitsmodell
Schreibgeschützt: Jeder Canvas-Aufruf ist ein GET; kein Tool kann in Canvas schreiben. Selbst das Lesen Ihres Posteingangs hinterlässt Nachrichten ungelesen.
Anmeldedaten befinden sich in der Umgebungskonfiguration Ihres MCP-Clients oder im macOS-Schlüsselbund — niemals auf der Festplatte in diesem Repository, niemals woanders als an die Canvas-Domäne Ihrer Schule übertragen. Dateidownloads folgen manuell Umleitungen, sodass Anmeldedaten niemals an ein CDN weitergeleitet werden.
Nach Belieben austauschen: Melden Sie sich von Canvas ab (oder widerrufen Sie das Token), und die Anmeldedaten sind überall ungültig.
canvas_auth_statuszeigt Ihnen, welche Anmeldedaten verwendet werden, wo sie gespeichert sind und ob sie noch funktionieren.
Lizenz
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.59MIT
- AlicenseAqualityAmaintenanceMCP server for Canvas LMS enabling parent observers and students to access courses, assignments, grades, and more. Supports multiple authentication methods including token, OAuth, and a convenient fetchproxy fallback.18662MIT
- Alicense-qualityDmaintenanceMCP server that provides tools to read UBC Canvas LMS data, including courses, assignments, announcements, submissions, and calendar, for use with Claude Desktop, Claude Code, or n8n AI agents.59MIT
- Alicense-qualityDmaintenanceMCP server for Canvas LMS with automatic OAuth authentication. Enables interaction with courses, assignments, grades, modules, discussions, quizzes, files, calendar, messaging, and more without manual API token management.330MIT
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xmike04/canvas-student-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server