Canvas LMS MCP Server
Canvas LMS MCP Server
Ein Model Context Protocol-Server, der einem MCP-Client (Claude Desktop, Claude Code oder allem anderen, das MCP spricht) schreibgeschützten Zugriff auf dein Canvas LMS-Konto gewährt.
Er beantwortet zwei Fragen:
„Was belege ich und wie stehe ich?" – aktive Kurse mit aktuellen Noten.
„Was muss ich noch abgeben und wann ist es fällig?" – offene Aufgaben mit Fälligkeitsterminen.
Die Kommunikation nutzt den standardmäßigen stdio-Transport, der Client startet den Server also als Unterprozess. Auf stdout wird außer MCP-Datenverkehr nichts geschrieben.
Voraussetzungen
Node.js 18.17 oder neuer (der Server nutzt das eingebaute
fetch)Ein persönlicher Canvas-Zugriffstoken
Related MCP server: Canvas MCP Server
Installation
cd canvas-mcp-server
npm installKonfiguration
Beide Variablen sind erforderlich; der Server beendet sich mit einer klaren Meldung, wenn eine fehlt.
Variable | Beschreibung | Beispiel |
| Die Wurzel deiner Canvas-Instanz. Ein abschließendes |
|
| Ein persönlicher Canvas-Zugriffstoken. |
|
Einen Canvas-Zugriffstoken erhalten
Melde dich bei Canvas an.
Gehe zu Konto → Einstellungen.
Klicke unter Zugelassene Integrationen auf + Neuer Zugriffstoken.
Gib einen Zweck und (optional) ein Ablaufdatum an und klicke dann auf Token generieren.
Kopiere den Token sofort – Canvas zeigt ihn nur einmal an.
Der Token trägt deine vollen Canvas-Berechtigungen. Halte ihn aus der Versionsverwaltung heraus und widerrufe ihn auf derselben Einstellungsseite, falls er jemals durchsickert.
Einen Client verbinden
Füge den Server zu deiner MCP-Client-Konfiguration hinzu und verweise dabei auf den absoluten Pfad von
src/index.js:
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/absolute/path/to/canvas-mcp-server/src/index.js"],
"env": {
"CANVAS_API_URL": "https://asu.instructure.com",
"CANVAS_ACCESS_TOKEN": "your-token-here"
}
}
}
}Claude Desktop –
claude_desktop_config.json(macOS:~/Library/Application Support/Claude/, Windows:%APPDATA%\Claude\).Claude Code –
claude mcp add canvas --env CANVAS_API_URL=... --env CANVAS_ACCESS_TOKEN=... -- node /absoluter/pfad/zu/canvas-mcp-server/src/index.js
Starte den Client nach dem Bearbeiten der Konfiguration neu.
Tools
list_courses_and_grades
Jeder Kurs, in dem du als Student aktiv eingeschrieben bist, mit seiner aktuellen Note.
Parameter | Typ | Standard | Beschreibung |
| boolean |
| Auch aktive Einschreibungen aus bereits beendeten Semestern einbeziehen. |
Canvas meldet Noten doppelt, wenn deine Einrichtung Notenperioden verwendet: einmal für die
laufende Periode und einmal für den gesamten Kurs. Das Feld grades.scope gibt an,
welche du gerade betrachtest:
current_grading_period– die Punktzahl deckt die laufende Notenperiode ab, undcourse_total_score/course_total_gradetragen die Gesamtkurszahlen.course_total– die Einrichtung verwendet keine Notenperioden, die Punktzahl ist also die Kursgesamtpunktzahl.unavailable– Canvas hat keine Einschreibung mit Notendaten zurückgegeben.
Innerhalb beider Bereiche ignoriert current_* noch nicht bewertete Arbeit, während
final_* unbewertete Arbeit als Null zählt.
{
"courses": [
{
"id": "101",
"name": "Full Stack Web Development",
"course_code": "GIT-411",
"term": "Fall 2026",
"term_start": "2026-08-20T00:00:00Z",
"term_end": "2026-12-18T00:00:00Z",
"enrollment_state": "active",
"grades": {
"current_score": 88.0,
"current_grade": "B+",
"final_score": 80.5,
"final_grade": "B-",
"scope": "current_grading_period",
"grading_period_title": "Fall Term",
"course_total_score": 91.4,
"course_total_grade": "A-"
},
"html_url": "https://asu.instructure.com/courses/101"
}
],
"course_count": 1,
"retrieved_at": "2026-09-01T12:00:00.000Z"
}list_upcoming_assignments
Aufgaben in deinen aktiven Kursen, die noch ausstehen, sortiert nach Fälligkeitsdatum, zuerst die frühesten.
Parameter | Typ | Standard | Beschreibung |
| integer 1–365, oder |
| Wie weit voraus geschaut werden soll. |
| boolean |
| Überfällige, nie abgegebene Arbeit einbeziehen. |
| boolean |
| Ausstehende Arbeit ohne Fälligkeitsdatum einbeziehen. |
| string[] | alle aktiven Kurse | Auf bestimmte Canvas-Kurs-IDs beschränken. |
Eine Aufgabe gilt als ausstehend, wenn sie veröffentlicht, bewertbar und nicht eingereicht, bewertet oder entschuldigt ist. Konkret werden diese herausgefiltert:
alles mit einem Einreichungszeitstempel
Einreichungen im Zustand
submitted,pending_reviewodergradedentschuldigte Aufgaben
Aufgaben, die bereits eine Punktzahl oder Note tragen (manuelle oder Papier-Eintragung)
not_graded-Aufgaben (Anwesenheitsplatzhalter und Ähnliches)unveröffentlichte Aufgaben
{
"assignments": [
{
"id": "9004",
"name": "Missed lab writeup",
"course_id": "101",
"course_name": "Full Stack Web Development",
"due_at": "2026-08-28T06:59:00.000Z",
"days_until_due": -4.2,
"overdue": true,
"points_possible": 25,
"submission_types": ["online_upload"],
"submission_state": "unsubmitted",
"missing": true,
"locked": false,
"unlock_at": null,
"lock_at": null,
"html_url": "https://asu.instructure.com/courses/101/assignments/9004"
}
],
"assignment_count": 1,
"courses_checked": 2,
"window": {
"from": "2026-09-01T12:00:00.000Z",
"to": "2026-09-15T12:00:00.000Z",
"include_overdue": true,
"include_undated": false
},
"errors": [],
"retrieved_at": "2026-09-01T12:00:00.000Z"
}Wenn ein Kurs nicht gelesen werden kann – abgeschlossen, eingeschränkt oder anderweitig fehlerhaft –
wird er in errors aufgelistet und die übrigen Kurse liefern weiterhin Ergebnisse.
Hinweise zum Verhalten
Paginierung. Canvas paginiert jede Sammlung über den
Link-Header. Der Client folgtrel="next"bei 100 Datensätzen pro Seite, begrenzt auf 20 Seiten pro Endpunkt, damit eine fehlerhafte Antwort nicht in einer Endlosschleife enden kann.Nebenläufigkeit. Aufgaben werden von höchstens 5 Kursen gleichzeitig abgerufen, um die Canvas-Ratenlimits nicht zu überschreiten.
Aktuelles Semester. Standardmäßig werden nur Kurse zurückgegeben, deren Semester nicht beendet ist. Das Standard-Semester von Canvas hat kein Enddatum und ist immer enthalten.
Fehler. Canvas-Fehler werden als MCP-Tool-Fehler mit dem Statuscode und der Canvas-eigenen Meldung zurückgegeben, mit einem Hinweis für die häufigen Fälle (401 → falscher Token, 404 → falsche URL).
Schreibgeschützt. Beide Tools sind mit
readOnlyHintannotiert. Der Server sendet nurGET-Anfragen und ändert niemals deine Canvas-Daten.
Entwicklung
npm test # 36 tests: API client, grade logic, filtering, and an end-to-end MCP round tripDie Suite verwendet einen fetch-Ersatz mit aufgezeichneten Canvas-Payloads, sodass kein Netzwerk oder
echter Token benötigt wird. Alle Fixture-Daten sind relativ zum Zeitpunkt der Testausführung.
src/
index.js MCP server: tool definitions, schemas, stdio wiring
canvas.js Canvas REST client: auth, pagination, error mapping
courses.js Active-course and grade normalization
assignments.js Outstanding-assignment filtering and due-date windowsLizenz
MIT
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
- FlicenseAqualityNot gradedmaintenanceEnables interaction with Canvas LMS courses and assignments directly from your LLM, allowing you to retrieve, search, and summarize course information, check due dates, and access assignment details without leaving your AI assistant.4330
- FlicenseBqualityNot gradedmaintenanceProvides read-only access to Canvas LMS for students to retrieve courses, assignments, grades, files, discussions, and planner items. Includes optional NotebookLM integration for uploading course content to AI-powered study notebooks.45330
- AlicenseAqualityCmaintenanceEnables AI systems to interact with Canvas Learning Management System data, allowing users to access courses, assignments, quizzes, planner items, files, and syllabi through natural language queries.227MIT
- FlicenseBqualityDmaintenanceEnables interaction with Canvas LMS to access courses, modules, files, pages, assignments, submissions, announcements, upcoming deadlines, and syllabus.15
Related MCP Connectors
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
Voice-led, FSRS-scheduled flashcards from YouTube, PDFs, web, or text. Auto-graded quizzes.
Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.
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/zwanner/canvas-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server