MyCourseVille MCP Server
MyCourseVille MCP Server
Ein MCP-Server, der einem KI-Agenten Zugriff auf dein MyCourseVille-Konto gewährt: neue Aufgaben mit ihren Fristen und Beschreibungen, Kursmaterialien und veröffentlichte Noten – plus einen „Was hat sich seit dem letzten Mal geändert?“-Feed.
Ein persönliches Werkzeug für deine eigenen Kontodaten. Halte das Polling-Intervall moderat und committe niemals deine Zugangsdaten.
So funktioniert es
MCV hat eine offizielle OAuth2-API (/api/v1/public/get/*), aber dafür muss man eine App registrieren, um an client_id/client_secret zu gelangen, und ihre Endpunktnamen sind nicht öffentlich dokumentiert. Dieser Server meldet sich stattdessen genau so an, wie es der MCV-Webclient tut – standardmäßig über den IT-Chula-SSO-Button, sonst über das einfache MCV-Formular – und liest dieselben servergerenderten Kursseiten, die auch der Browser geliefert bekommt: die Kursübersicht für Materialien, /assignment für Fristen und /portfolio-<student id> für Noten. Siehe docs/ENDPOINTS.md.
Die abgerufenen Daten landen in einem lokalen SQLite-Snapshot. Jede Synchronisation erzeugt einen Diff gegen diesen Snapshot und schreibt in ein events-Log – dieses Log liest whats_new, damit der Server dir mitteilen kann, was seit deinem letzten Blick neu aufgetaucht ist. Ein Hintergrund-Poller aktualisiert in einem bestimmten Intervall, sodass eine neue Aufgabe auch dann bemerkt wird, wenn gerade kein Chat geöffnet ist.
Zu „neu“: MCV legt keinen zuverlässigen Zeitstempel für die Veröffentlichung eines Objekts offen. Deshalb ist first_seen – der Zeitpunkt, zu dem dieser Server ein Element zum ersten Mal gesehen hat – der Stellvertreter. Die allererste Synchronisation befüllt alles unauffällig nach, statt dein gesamtes Semester als neu zu melden.
Related MCP server: UofT Student Helper MCP Server
Setup
uv sync --extra dev
cp .env.example .env # then fill in MCV_USERNAME / MCV_PASSWORD
uv run mcv-mcp --selftest--selftest meldet sich an, synchronisiert einmal und gibt aus, wie viele Kurse, Aufgaben, Materialien und Noten gefunden wurden. Bring das zum Laufen, bevor du den Agenten anbindest.
Registrieren bei Claude Code:
claude mcp add mcv -- uv --directory C:\Users\velys\Documents\mcp_mcv run mcv-mcpDann frag: „Was ist diese Woche fällig?“, „Gibt es etwas Neues bei ‚If MCV seit gestern?“, „Lade die neuesten Folien für Comp Prog herunter.“
Werkzeuge
Werkzeug | Das beantwortet es |
| Neue/geänderte Aufgaben, Materialien und Noten seit einem bestimmten Zeitpunkt |
| Was in den nächsten N Tagen fällig wird, das Dringendste zuerst |
| Eingeschriebene Kurse, optional nur ein Semester |
| Aufgaben mit Frist + Beschreibung |
| Alle Details zu einer einzelnen Aufgabe |
| Dateien, die in einem Kurs bereitgestellt wurden (Ordner, Dateiname, URL) |
| Datei lokal speichern and PDF-Text extrahieren, damit er Datenschutz lesbar ist |
| Veröffentlichte Noten |
| Aktualisierung erzwingen ( |
| Diagnosen: Anmeldestatus, letzte Synchronisierung, Datensatzzahl |
Konfiguration
Variable | Standard | Bedeutung |
| – | Deine MCV-Anmeldedaten |
|
|
|
|
| Polling-Intervall (unechte Grenze 10) |
|
| Auf |
|
| Ablageort für Datenbank, Cookies und Downloads |
Der Zustand wird außerhalb des Repositories gehalten. Cookies werden gespeichert, sodass nach einem Neustart keine erneute Anmeldung nötig ist.
Führe den Poller separat (z. B. im Taskplaner) aus mit:
uv run python -m mcv_mcp.pollerAufbau
src/mcv_mcp/
config.py settings, URLs, state paths
client.py Chula SSO login, cookie persistence, throttled AJAX transport
parsers.py HTML -> dicts (pure functions, fixture-tested)
store.py SQLite snapshot + event log
sync.py orchestration + background poller
server.py MCP tool definitionsMCVs Markup ist der fragileteil, und er ist auf parsers.py eingegrenzt. Wenn etwas plötzlich keine Zeilen mehr zurückgibt, nimm eine frische Fixture (siehe docs/ENDPOINTS.md) auf und korrigiere den Selektor dort.
Status
Getestet mit einem echten Konto: Login, alle vier Parser, Downloads und Änderungserkennung sind Ende-zu-Ende verifiziert. Eine repräsentative Synchronisation lieferte 9 Kurse, 20 Aufgaben (alle mit geparster Frist bzw. Deadline), 112 Materialien und 69 benotete Einträge; die Folgesynchronisation meldete keine Änderungen – das Diff-Log bleibt also ruhig, bis sich tatsächlich etwas bewegt.
Bekannte Grenzen:
Die Notenveröffentlichung wird durch Polling erkannt, nicht öffentlich. Ein erscheinender Punkt taucht innerhalb eines Poll-Intervalls (Standard 30 Minuten) als Ereignis
grade_changedauf.Es wird nur das aktuelle Semester synchron is synchronisiert, es sei du du mit
sync_nowdasfull=truemitgibst.Das Markup von MCV ist der fragile Teil. Wenn ein Parser keine Zeilen mehr liefert, nimm eine Fixture auf und korrigiere den Selektor – siehe docs/ENDPOINTS.md.
Entwicklung
uv run pytestMaintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Canvas LMS and Gradescope, allowing users to query courses, assignments, modules, calendar events, and find relevant resources using natural language.59ISC
- FlicenseNot gradedqualityNot gradedmaintenanceEnables University of Toronto students to access academic data from ACORN and Quercus via AI assistants. It provides tools to retrieve course schedules, enrollment details, syllabi, assignments, and announcements.
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access Canvas LMS course content, including assignments, modules, announcements, and files, to help students manage their coursework.59ISC
- AlicenseNot gradedqualityDmaintenanceEnables AI to read MyCourseVille data locally, including assignments, deadlines, grades, announcements, and course materials.1MIT
Related MCP Connectors
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
Cross-AI personal memory. Save once in ChatGPT, recall in Claude, Mistral, Grok, or any MCP client.
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/aongzera/mcv-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server