CanvasLMS-API
CanvasLMS - API
CanvasLMS - API ist ein lokaler MCP-Server, der Ihr Canvas-LMS-Konto vor einen KI-Assistenten stellt. Er läuft auf Ihrem Rechner, kommuniziert mit Canvas über Ihr persönliches Zugriffstoken und stellt etwa 100 Tools für Kurse, Aufgaben, Benotung, Diskussionen, Module, Seiten, Dateien, Nachrichten, Peer-Reviews und Barrierefreiheit bereit. Jedes Tool gibt Markdown zurück. Jedes Tool, das Canvas verändert, zeigt zuerst eine Vorschau der Änderung und wendet sie erst an, wenn Sie bestätigen.
Schnellstart
Holen Sie sich ein persönliches Canvas-Zugriffstoken: Gehen Sie in Canvas zu Account > Settings > Approved Integrations > New Access Token.
Klonen Sie das Repository und installieren Sie es.
git clone https://github.com/harryx2011-boop/CanvasLMS-API.git
cd CanvasLMS-API
uv venv .venv
uv pip install -e .Ohne uv verwenden Sie stattdessen eine Standard-Virtual-Environment:
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS/Linux
pip install -e .Kopieren Sie die Beispiel-Umgebungsdatei und füllen Sie Ihren Canvas-Host und Ihr Token aus.
cp .env.example .envÜberprüfen Sie die Verbindung.
canvaslms-api --testDies gibt Ihren Namen, Ihre Benutzer-ID und aktive Kurse aus. Wenn es fehlschlägt, überprüfen Sie CANVAS_URL und CANVAS_TOKEN in .env.
Related MCP server: Canvas LMS MCP Server
Mit Claude Code verbinden
Windows:
claude mcp add --scope user canvaslms-api -- "<absolute path>\.venv\Scripts\canvaslms-api.exe"macOS/Linux:
claude mcp add --scope user canvaslms-api -- "<absolute path>/.venv/bin/canvaslms-api"Der Server liest .env aus dem Repository-Ordner beim Start, daher müssen keine Umgebungsvariablen in die Client-Konfiguration aufgenommen werden. Verwenden Sie den absoluten Pfad zur ausführbaren Datei in .venv.
Mit Claude Desktop verbinden
Fügen Sie einen Eintrag zu Ihrer Claude-Desktop-Konfigurationsdatei hinzu:
{
"mcpServers": {
"canvaslms-api": {
"command": "<absolute path>\\.venv\\Scripts\\canvaslms-api.exe"
}
}
}Verwenden Sie unter macOS/Linux <absolute path>/.venv/bin/canvaslms-api für command.
Speicherorte der Konfigurationsdateien:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Starten Sie Claude Desktop nach dem Bearbeiten der Datei neu.
Andere Clients
Jeder MCP-Client, der stdio-Server unterstützt, kann die ausführbare Datei direkt starten, genauso wie Claude Code und Claude Desktop oben.
Für Clients, die nur HTTP sprechen, führen Sie den Server mit dem HTTP-Transport aus:
canvaslms-api --transport http --host 127.0.0.1 --port 7100Richten Sie den Client auf http://127.0.0.1:7100. Der Server liest weiterhin Canvas-Anmeldedaten aus .env im Repository-Ordner.
Verhalten
Kurs-IDs. Jedes
course-Argument akzeptiert eine numerische Canvas-ID, einen Kurscode (ENG101), einen Teil eines Kursnamens odersis_course_id:X. Verwenden Sielist_courseszuerst, wenn Sie nicht sicher sind, welchen Sie möchten.Die Bestätigungs-Sperre. Jedes Tool, das Canvas ändert, nimmt ein
confirm: bool = false-Argument. Ohne dieses Argument gibt das Tool eine Vorschau dessen zurück, was geändert würde, und stellt keine Anfrage, die Canvas verändert. Rufen Sie es nach der Überprüfung der Vorschau erneut mitconfirm=trueauf.Berechtigungen. Jedes Tool läuft als Token-Inhaber. Ein Studenten-Token kann keine privaten Daten anderer Studenten sehen oder Pädagogen-Tools wie Benotung oder Massennachrichten verwenden; solche Aufrufe geben den Canvas-403 mit einem Hinweis darauf zurück, welche Berechtigung fehlt.
Ausgabe. Jedes Tool gibt Markdown zurück, formatiert für die direkte Anzeige in einem Chat-Transkript.
Anonymisierung. Wenn
CANVAS_ANONYMIZE_STUDENTS=trueist, werden Studentennamen in der Tool-Ausgabe durch ein stabiles, kursbezogenes Pseudonym ersetzt, anstatt ihres echten Namens.
Tool-Referenz
Schreib-Tools (markiert mit confirm) geben eine Vorschau zurück, bis sie erneut mit confirm=true aufgerufen werden.
Kurse & Identität
Tool | Zweck | confirm |
get_profile | Profil des Token-Inhabers abrufen | |
get_enrollments | Einschreibungen des Token-Inhabers über Kurse hinweg auflisten | |
list_courses | Kurse auflisten und durchsuchen, die der Token-Inhaber sehen kann | |
get_course | Details für einen Kurs abrufen | |
get_syllabus | Syllabus-Inhalt eines Kurses abrufen | |
get_course_overview | Kurs zusammenfassen: Syllabus, Module, anstehende Arbeiten | |
get_course_structure | Vollständige Modul-/Seiten-/Aufgabenübersicht eines Kurses abrufen | |
get_cache_status | Anzeigen, welche Kursauflösungsdaten zwischengespeichert sind | |
clear_cache | Cache für Kursauflösung leeren |
Student
Tool | Zweck | confirm |
get_upcoming_assignments | Aufgaben auflisten, die bald fällig sind, über Kurse hinweg | |
get_todo | Canvas-Aufgabenliste abrufen | |
get_submission_status | Status für eingereichte/fehlende/bewertete Arbeiten für einen Kurs anzeigen | |
get_grades | Aktuelle Noten für einen oder alle Kurse abrufen | |
get_pending_peer_reviews | Peer-Reviews auflisten, die der Token-Inhaber noch schuldet | |
get_submission | Details und Feedback einer Abgabe abrufen | |
submit_assignment | Eine Aufgabe einreichen | confirm |
comment_on_submission | Einen Kommentar zu einer Abgabe hinzufügen | confirm |
mark_module_item_done | Ein Modulelement als abgeschlossen markieren | confirm |
Aufgaben & Benotung
Tool | Zweck | confirm |
list_assignments | Aufgaben eines Kurses auflisten | |
get_assignment | Details einer Aufgabe abrufen | |
list_submissions | Abgaben für eine Aufgabe auflisten | |
get_assignment_analytics | Abgabe- und Notenverteilung für eine Aufgabe zusammenfassen | |
get_student_analytics | Aktivität eines Studenten in einem Kurs zusammenfassen | |
create_assignment | Eine Aufgabe erstellen | confirm |
update_assignment | Eine Aufgabe aktualisieren | confirm |
bulk_grade_submissions | Mehrere Abgaben in einem Aufruf benoten | confirm |
grade_with_rubric | Eine Abgabe anhand einer Rubrik benoten | confirm |
Rubriken
Tool | Zweck | confirm |
list_rubrics | Rubriken eines Kurses auflisten | |
get_rubric | Kriterien einer Rubrik abrufen | |
get_rubric_assessment | Rubrik-Bewertung einer Abgabe abrufen | |
create_rubric | Eine Rubrik erstellen | confirm |
create_rubric_from_csv | Eine Rubrik aus einer CSV-Definition erstellen | confirm |
associate_rubric | Eine Rubrik an eine Aufgabe anhängen | confirm |
Diskussionen & Ankündigungen
Tool | Zweck | confirm |
list_discussion_topics | Diskussionsthemen eines Kurses auflisten | |
get_discussion_topic | Ein Diskussionsthema abrufen | |
list_discussion_entries | Top-Level-Einträge in einem Thema auflisten | |
get_discussion_entry | Einen Diskussionseintrag abrufen | |
get_discussion_thread | Einen vollständigen Thread mit Antworten abrufen | |
post_discussion_entry | Einen neuen Eintrag zu einem Thema posten | confirm |
reply_to_discussion_entry | Auf einen vorhandenen Eintrag antworten | confirm |
create_discussion_topic | Ein Diskussionsthema erstellen | confirm |
update_discussion_topic | Ein Diskussionsthema aktualisieren | confirm |
list_announcements | Ankündigungen eines Kurses auflisten | |
create_announcement | Eine Ankündigung erstellen | confirm |
delete_announcement | Eine Ankündigung löschen | confirm |
delete_announcements | Mehrere Ankündigungen per ID löschen | confirm |
delete_announcements_matching | Ankündigungen löschen, die einem Filter entsprechen | confirm |
Module
Tool | Zweck | confirm |
list_modules | Module eines Kurses auflisten | |
list_module_items | Elemente in einem Modul auflisten | |
create_module | Ein Modul erstellen | confirm |
update_module | Ein Modul aktualisieren | confirm |
delete_module | Ein Modul löschen | confirm |
add_module_item | Ein Element zu einem Modul hinzufügen | confirm |
update_module_item | Ein Modulelement aktualisieren | confirm |
delete_module_item | Ein Modulelement löschen | confirm |
Seiten
Tool | Zweck | confirm |
list_pages | Seiten eines Kurses auflisten | |
get_page | Metadaten einer Seite abrufen | |
get_page_content | Inhalt einer Seite abrufen | |
get_front_page | Startseite eines Kurses abrufen | |
create_page | Eine Seite erstellen | confirm |
edit_page_content | Inhalt einer Seite ersetzen | confirm |
update_page_settings | Einstellungen einer Seite aktualisieren (Titel, Veröffentlichungsstatus, Bearbeitungsrechte) | confirm |
bulk_update_pages | Dieselbe Bearbeitung auf mehrere Seiten anwenden | confirm |
delete_page | Eine Seite löschen | confirm |
Dateien
Tool | Zweck | confirm |
list_files | Dateien eines Kurses auflisten | |
read_file | Inhalt einer Textdatei lesen | |
download_file | Eine Datei auf die Festplatte herunterladen | |
upload_file | Eine Datei in einen Kurs hochladen | confirm |
Nachrichten
Tool | Zweck | confirm |
list_conversations | Canvas-Posteingang-Konversationen auflisten | |
get_conversation | Nachrichten einer Konversation abrufen | |
get_unread_count | Anzahl ungelesener Nachrichten abrufen | |
mark_conversations_read | Konversationen als gelesen markieren | confirm |
send_conversation | Eine neue Nachricht senden | confirm |
send_bulk_messages | Dieselbe Nachricht an mehrere Empfänger senden | confirm |
Peer-Reviews
Tool | Purpose | confirm |
list_peer_reviews | Peer-Review-Aufgaben für eine Aufgabe auflisten | |
assign_peer_review | Eine Peer-Review zuweisen | confirm |
get_peer_review_assignments | Auflisten, wer wen bewertet | |
get_peer_review_completion_analytics | Abschlussquoten von Peer-Reviews zusammenfassen | |
get_peer_review_followup_list | Studierende auflisten, die noch eine Peer-Review schulden | |
get_peer_review_comments | Kommentare aus einer Peer-Review abrufen | |
analyze_peer_review_quality | Peer-Review-Feedback nach Tiefe und Nützlichkeit bewerten | |
identify_problematic_peer_reviews | Peer-Reviews mit geringem Aufwand oder fehlende Peer-Reviews kennzeichnen | |
generate_peer_review_report | Einen zusammenfassenden Bericht über die Peer-Review-Aktivität erstellen | |
generate_peer_review_feedback_report | Einen Bericht über den Feedback-Inhalt aller Peer-Reviews erstellen | |
extract_peer_review_dataset | Peer-Review-Daten zur Analyse exportieren | |
message_peer_reviewers | Studierende über ihre Peer-Review-Aufgaben benachrichtigen | confirm |
send_peer_review_followups | Erinnerungen an Studierende mit ausstehenden Peer-Reviews senden | confirm |
Personen & Datenschutz
Tool | Purpose | confirm |
list_users | Die eingeschriebenen Benutzer eines Kurses auflisten | |
list_groups | Die Gruppen eines Kurses auflisten | |
check_enrollment | Die Einschreibung eines Benutzers in einem Kurs prüfen | |
export_anonymization_map | Die Zuordnung von Pseudonymen zu echten Namen exportieren | confirm |
get_privacy_status | Anzeigen, ob die Anonymisierung aktiv ist |
Barrierefreiheit
Tool | Purpose | confirm |
scan_course_content_accessibility | Die Seiten und Dateien eines Kurses auf Barrierefreiheitsprobleme prüfen | |
fix_accessibility_issues | Korrekturen für erkannte Barrierefreiheitsprobleme anwenden | confirm |
fetch_ufixit_report | Einen vorhandenen UFIXIT-Barrierefreiheitsbericht abrufen | |
parse_ufixit_violations | Verstöße aus einem UFIXIT-Bericht extrahieren | |
format_accessibility_summary | Einen Barrierefreiheitsscan als lesbare Zusammenfassung formatieren |
Kurskopie
Tool | Purpose | confirm |
create_content_migration | Eine Kursinhaltsmigration/-kopie starten | confirm |
get_content_migration_status | Den Fortschritt einer Inhaltsmigration prüfen |
Meta
Tool | Purpose | confirm |
search_tools | Die verfügbaren Tools nach Stichwort durchsuchen |
Konfiguration
Die gesamte Konfiguration erfolgt über Umgebungsvariablen, die aus einer .env-Datei im Repository-Stammverzeichnis geladen werden.
Variable | Erforderlich | Standard | Zweck |
| ja | Ihr Canvas-Host, z. B. | |
| ja | Ihr persönliches Canvas-Zugriffstoken. | |
| nein |
| HTTP-Request-Timeout in Sekunden. |
| nein |
| Wie lange Ergebnisse der Kursauflösung zwischengespeichert werden, in Sekunden. |
| nein |
| Maximale gleichzeitige Anfragen an Canvas. |
| nein |
| Studentennamen in der Tool-Ausgabe durch stabile Pseudonyme ersetzen. |
| nein | System-Temp-Verzeichnis | Wohin |
Führen Sie canvaslms-api --config aus, um die aufgelöste Konfiguration mit maskiertem Token auszugeben.
Entwicklung
Installation mit Dev-Extras:
uv pip install -e ".[dev]"Tests ausführen:
pytestLint:
ruff check .CI führt bei jedem Push Tests und Lint aus. Ein Docker-Image ist ebenfalls verfügbar; sein Einstiegspunkt ist canvaslms-api.
Nützliche CLI-Flags während der Entwicklung: canvaslms-api --list-tools gibt jeden registrierten Toolnamen aus, canvaslms-api --config gibt aufgelöste Einstellungen aus, canvaslms-api --version gibt die installierte Version aus.
Sicherheitshinweise
Ihr Canvas-Token bleibt lokal. Es wird beim Start aus
.envgelesen und nur zum Aufrufen der von Ihnen konfigurierten Canvas-API verwendet.Das Token wird niemals protokolliert.
--configundget_privacy_statusmaskieren es.Schreib-Tools erfordern nach einer Vorschau ein explizites
confirm=true. In Canvas wird nichts versehentlich geändert.download_fileüberschreibt keine vorhandene Datei am Zielpfad.
Lizenz
MIT. Siehe LICENSE.
This server cannot be installed
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
- AlicenseCqualityAmaintenanceLocal-first MCP server for Canvas LMS. Stdio transport, no third-party broker, token stays in ~/.canvas.env. Exposes courses, assignments, modules, announcements, grades, planner items, upcoming events, todo list, and bulk file dump as MCP tools.104MIT
- AlicenseBqualityAmaintenanceMCP server for Canvas LMS, providing 115+ tools to read courses, assignments, submissions, rubrics, quizzes; grade, comment, manage course content, and handle Canvas admin workflows from any AI agent.241639955MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.59MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS that exposes courses, assignments, modules, pages, files, grades, and submissions as tools for AI agents.
Related MCP Connectors
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
An MCP server that gives your AI access to the source code and docs of all public github repos
Connect AI agents to Flato's editable canvas runtime through a hosted MCP server.
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/harryx2011-boop/CanvasLMS-API'
If you have feedback or need assistance with the MCP directory API, please join our Discord server