ZHAW Moodle MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZHAW_MOODLE_MCP_CONFIG | No | Optional path to a TOML configuration file. Overrides the default config location. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| moodle_auth_statusA | Check whether a valid ZHAW Moodle session exists. Never returns credentials. |
| moodle_loginA | Log in to ZHAW Moodle. Opens a browser window where the USER signs in with SWITCH edu-ID (incl. MFA) themselves; returns once login is detected. Never ask the user for their password. Other tools log in automatically when needed. |
| moodle_logoutA | Log out: end the Moodle session and delete the locally stored browser session and cookies. The next Moodle request will require a new login. |
| moodle_list_coursesA | List the user's ZHAW Moodle courses. |
| moodle_get_courseA | Get the structure of a course: sections, nested subsections and all activities/materials (files, folders, links, pages, quizzes, assignments, ...). Text blocks (labels) include their text. |
| moodle_get_contentA | Read the text of a Moodle page ("Textseite") or text block ("Textfeld"/label) as Markdown, with the links it contains. Such texts often hold instructions, rules for assignments and exams, or reading lists. Opening a page counts as a view in Moodle. |
| moodle_list_resourcesA | List learning materials of a course: files (pdf, powerpoint, word, excel, zip, ...), folders, external links and Moodle pages, with their section. |
| moodle_download_resourceA | Download a file, all files of a folder, or files linked in a page/text block, and return the local paths. |
| moodle_read_fileA | Read the text of a course file (PDF, PowerPoint .pptx, Word .docx, HTML, text).
Downloads the file first if needed. Use this to summarise or explain lecture slides,
scripts and exercise sheets. Long files come in parts: continue with |
| moodle_sync_courseA | Synchronise all files of a course into the local download directory. Downloads new files, re-downloads changed ones and reports what changed. Files removed from Moodle are reported but never deleted locally. |
| moodle_sync_allA | Synchronise all active (current semester) courses into the local download directory and return a per-course summary. Same rules as moodle_sync_course. |
| moodle_searchA | Search Moodle by name: courses, sections, materials (files, folders, links, pages), assignments, quizzes and files inside folders. Case- and umlaut-insensitive, tolerant to small typos; all words must match (e.g. "OR ZGB", "Übung 3", "Semesterprogramm"). |
| moodle_get_deadlinesA | Open to-dos with deadlines across all courses (assignment due dates, quiz closing times, ...), sorted by date. Answers "What do I need to submit this week?". Activities already completed are not listed. |
| moodle_list_assignmentsA | Assignments with opening date, deadline, submission and grading status and description. Without course_id all current courses are included (one request per assignment). |
| moodle_get_announcementsA | Recent announcements ("Ankündigungen") posted by lecturers, newest first, with the message text of the most recent ones. |
| moodle_get_recent_changesA | What changed in Moodle since a point in time: new or updated materials and activities, new announcements, and new or changed deadlines, grouped by course. Answers "What is new in Moodle since Monday?". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| study_assistant | Start a study session: Claude acts as a tutor for your ZHAW courses. |
| last_lecture_summary | Summary of the most recent lecture of a course, with exam-relevant points and self-check questions. Args: course: course name or part of it, e.g. "Software Engineering" |
| deadlines_overview | All submissions and deadlines across your courses as a table. Args: days: how many days ahead to highlight (default 14) |
| whats_new | New material, announcements and deadlines in your courses. Args: since: date like 2026-09-14 or relative like 7d |
| exam_preparation | Topic map and study plan for a course exam, then practice questions. Args: course: course name or part of it exam_date: date of the exam, if known (e.g. 2027-01-20) |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Most tools target a distinct Moodle action and resource type, and the descriptions make the differences clear. A few closely related pairs—such as list_resources vs get_course and get_deadlines vs list_assignments—could be confused at selection time, but the usage guidance separates them well.
All tools share the moodle_ prefix and nearly all follow a verb_noun pattern such as list_courses, read_file, and get_announcements. The convention is broken slightly by moodle_auth_status and the bare verbs login/logout, though the overall pattern remains predictable.
With 16 tools, the set is just above the typical well-scoped 3-15 range, but each tool serves a distinct workflow spanning auth, course navigation, content access, search, deadlines, announcements, and change tracking. No tool feels redundant, so the count is justified.
The server covers the full read-side workflow for a student-facing Moodle assistant: session handling, course discovery, structural overview, content extraction and download, offline syncing, search, deadlines, assignments, announcements, and recent changes. There are no obvious dead ends for the core workflows implied by the tool set.