Skip to main content
Glama

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

  1. Holen Sie sich ein persönliches Canvas-Zugriffstoken: Gehen Sie in Canvas zu Account > Settings > Approved Integrations > New Access Token.

  2. 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 .
  1. Kopieren Sie die Beispiel-Umgebungsdatei und füllen Sie Ihren Canvas-Host und Ihr Token aus.

cp .env.example .env
  1. Überprüfen Sie die Verbindung.

canvaslms-api --test

Dies 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.json

  • macOS: ~/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 7100

Richten 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 oder sis_course_id:X. Verwenden Sie list_courses zuerst, 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 mit confirm=true auf.

  • 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=true ist, 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

CANVAS_URL

ja

Ihr Canvas-Host, z. B. https://yourschool.instructure.com. Kein /api/v1-Suffix.

CANVAS_TOKEN

ja

Ihr persönliches Canvas-Zugriffstoken.

CANVAS_TIMEOUT

nein

30

HTTP-Request-Timeout in Sekunden.

CANVAS_CACHE_TTL

nein

300

Wie lange Ergebnisse der Kursauflösung zwischengespeichert werden, in Sekunden.

CANVAS_MAX_CONCURRENCY

nein

5

Maximale gleichzeitige Anfragen an Canvas.

CANVAS_ANONYMIZE_STUDENTS

nein

false

Studentennamen in der Tool-Ausgabe durch stabile Pseudonyme ersetzen.

CANVAS_DOWNLOAD_DIR

nein

System-Temp-Verzeichnis

Wohin download_file heruntergeladene Dateien schreibt.

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:

pytest

Lint:

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 .env gelesen und nur zum Aufrufen der von Ihnen konfigurierten Canvas-API verwendet.

  • Das Token wird niemals protokolliert. --config und get_privacy_status maskieren 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.

A
license - permissive license
Not graded
quality - not tested
C
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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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