moodle-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port of the hosted server. | 8080 |
| MOODLE_TOKEN | No | Use this key instead of the Keychain (e.g. on the hosted server). | |
| MCP_PASSPHRASE | No | Passphrase that approves connections to the hosted server. | |
| MOODLE_MCP_URL | No | Public URL; when set, serve over HTTP with OAuth sign-in. | |
| MOODLE_MCP_STATE_DIR | No | File cache, `whats_new` marker, pending renewal, sign-ins. | ~/.cache/moodle-mcp |
| MOODLE_KEYCHAIN_SERVICE | No | Keychain item holding the key. | moodle-epfl |
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 |
|---|---|
| list_coursesA | List the courses you're enrolled in, most recently visited first. |
| upcoming_deadlinesA | What's due soon: assignment/quiz deadlines plus other calendar events, with whether you still need to act. |
| course_overviewA | Show a course's sections and every item in them (files, assignments, pages, links, forums...) with ids. |
| open_itemA | Open any course item by id and return its content. |
| read_fileA | Download a Moodle file (e.g. an assignment attachment or a file in a folder) and return its text. |
| read_discussionA | Read a whole forum thread (all posts, oldest first). |
| announcementsA | Recent posts in the courses' Announcements (news) forums. |
| gradesA | Your grades in a course: every grade item with score, range, percentage and feedback. |
| searchA | Find course items (files, assignments, pages, links...) and sections by name across your courses. |
| search_in_filesA | Full-text search inside course files (PDF slides, lecture notes, handouts, code) and pages. |
| whats_newA | What changed in your courses: new or edited items and files, new grades, new forum posts. |
| sync_courseA | Download a course's materials into a local folder, one subfolder per section. |
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 12 tools
Most tools have clearly distinct purposes: listing courses, deadlines, course content, files, discussions, announcements, grades, search, and sync. However, open_item and read_file both handle file content, and search vs search_in_files could be confused (name search vs full-text search), though descriptions clarify the difference.
Tool names mostly follow a verb_noun pattern (list_courses, open_item, read_file, read_discussion, sync_course). Minor deviations: 'search' and 'search_in_files' are less consistent than 'search_items'/'search_files', and 'whats_new' lacks an underscore, but overall the pattern is readable and predictable.
12 tools is well-scoped for a Moodle assistant covering course browsing, deadlines, content retrieval, search, grades, announcements, and offline sync. Each tool serves a distinct workflow need without redundancy.
The surface covers the main student workflows: listing courses, viewing deadlines, reading content, searching, checking grades, and syncing. Minor gaps: no tool to submit assignments, create forum posts, or manage calendar events, but these are likely outside the server's read-oriented purpose.