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_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 |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Most tools target a distinct resource and action (auth, courses, files, deadlines, announcements), but a few have overlapping territory: get_recent_changes also surfaces announcements and deadlines, and get_course/list_resources/get_content all touch course content and text blocks. Descriptions are detailed enough that an agent can usually pick correctly, but there is some ambiguity.
All tool names follow the moodle_ prefix with a clear verb_noun convention: login, list_courses, get_content, download_resource, sync_course, get_announcements. The pattern is consistent and predictable.
Fifteen tools is at the upper edge of the ideal range but each one covers a distinct part of Moodle usage: session auth, course browsing, content/resource retrieval, syncing, search, and deadline/announcement queries. The count fits the scope of a Moodle assistant well.
The surface covers the main read-side workflows: exploring courses, reading materials, downloading/syncing files, searching, and checking deadlines/announcements. Minor gaps such as forum posts, grades, and assignment submission are absent, but agents can still accomplish most common Moodle tasks without dead ends.