moodle-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MOODLE_URL | No | The URL of your Moodle site. Defaults to https://uv.ulb.ac.be (ULB). | https://uv.ulb.ac.be |
| MOODLE_TOKEN | No | Your Moodle token. Can be provided via this environment variable instead of storing it in ~/.config/moodle-mcp/config.json. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_coursesA | List the courses the user is enrolled in (id, code, name). Past courses are hidden unless include_past. |
| get_course_outlineA | Sections, activities, links and files of a course, with the file refs used by read_file/download_files. |
| get_deadlinesC | Upcoming deadlines and actions to do (assignments, quizzes...), including overdue ones from the last 2 weeks. |
| get_announcementsA | Recent forum discussions (announcements and other course forums), newest first, with attachment refs. |
| read_discussionB | Every post of a forum discussion (ids come from get_announcements). |
| check_updatesA | What is new, changed or removed on Moodle since the courses were last marked as seen. The first call for a course records a baseline (everything currently there counts as seen). |
| mark_updates_seenA | Record the current Moodle content as seen, so check_updates stops reporting it. Only touches local state. |
| read_fileA | Text content of a course file (PDF, Word, PowerPoint, HTML, code, plain text). |
| download_filesA | Download course files into a local folder. Existing files are never overwritten. |
| mirror_courseA | Download every file of a course into dest_dir, mirroring Moodle's structure. Never overwrites. |
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 10 tools
Tools are mostly distinct, but get_announcements and check_updates both surface new course content, and download_files and mirror_course both download files; descriptions clarify boundaries, but an agent could occasionally misselect.
All tool names use a consistent snake_case verb_noun pattern (get_, list_, read_, check_, mark_, download_, mirror_), making the set predictable and easy to scan.
10 tools is well-scoped for a Moodle course-access client, with no redundant or trivial tools; each covers a distinct capability.
The surface covers core read workflows (courses, outline, deadlines, announcements, discussions, files, updates, mirroring), but lacks search, grades, or assignment interaction, which are minor gaps for a read-only client.