moodle-watch
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MOODLE_WATCH_DB | No | Ledger path. Default: `<mirror>/moodle_watch.db` | |
| MOODLE_WATCH_PORT | No | HTTP port. Default: `3041` | 3041 |
| MOODLE_WATCH_HOSTS | No | Comma-separated public host names | |
| MOODLE_WATCH_MIRROR | Yes | The moodle-dl directory. Required. | |
| MOODLE_WATCH_POLICY | No | Policy file. Default: `~/.config/moodle-watch/policy.toml` |
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 |
|---|---|
| coursesA | List watched courses, with unhandled counts and the next deadline. Each course carries the |
| whats_newA | What appeared, changed or vanished since
Already handled items are hidden unless |
| deadlinesC | Upcoming deadlines, soonest first.
|
| course_treeA | Sections and modules of one course, each item annotated with its state. Use this to navigate a course rather than to search it. For a whole-space
lookup by name, use |
| searchA | Full-text search over course, section, module and file names. Accent-insensitive: |
| backlogB | Everything not handled yet, oldest first. The work queue. An item leaves this list when |
| historyA | Every revision of one item, and everything that was done with it.
|
| read_documentA | Extract the text of one file, by its Reads the local copy when the mirror has it, and downloads through the
Moodle token otherwise. |
| mark_handledA | Record that these items were dealt with. Writes the ledger, not Moodle.
Handling is per revision: if the file changes later, it returns to the backlog on its own. |
| set_course_policyA | Decide whether a course is watched. Use this to answer a pending course.
|
| syncA | Start a watch cycle in the background and return at once. A full cycle takes minutes, so it never runs inside a tool call. Poll
|
| sync_statusA | The state of the most recent sync, running or finished.
|
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
The tools are mostly distinct in purpose—listing courses, diffing changes, showing deadlines, searching, reading, handling, and syncing. A few overlaps exist, such as whats_new also surfacing deadline changes and pending courses, and backlog overlapping with whats_new's unhandled view, but the descriptions are explicit enough to resolve ambiguity.
All names are lowercase and use underscores, but the convention is mixed: plural nouns (courses, deadlines), bare verbs (search, sync), and verb+noun compounds (read_document, mark_handled, set_course_policy) coexist. The names are readable but not predictable from a single pattern.
Twelve tools is well-scoped for a Moodle change-watching service, covering distinct phases from course policy and syncing to change discovery, reading, history, and handling. Each tool earns its place without obvious bloat or trivial additions.
The core workflow is covered end-to-end: sync, see what changed, inspect course structure and content, read files, mark items handled, and set course policy. Minor workarounds exist, such as no explicit undo of a handling action, but they do not block the main use case.