Skip to main content
Glama
a2br
by a2br

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoHTTP port of the hosted server.8080
MOODLE_TOKENNoUse this key instead of the Keychain (e.g. on the hosted server).
MCP_PASSPHRASENoPassphrase that approves connections to the hosted server.
MOODLE_MCP_URLNoPublic URL; when set, serve over HTTP with OAuth sign-in.
MOODLE_MCP_STATE_DIRNoFile cache, `whats_new` marker, pending renewal, sign-ins.~/.cache/moodle-mcp
MOODLE_KEYCHAIN_SERVICENoKeychain 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_coursesA

List the courses you're enrolled in, most recently visited first.

Courses hidden on your Moodle dashboard are ones you don't follow; other tools skip them
unless you name them explicitly.

Args:
    include_past: Also list courses whose end date has passed.
    include_hidden: Also list courses hidden on your dashboard.
upcoming_deadlinesA

What's due soon: assignment/quiz deadlines plus other calendar events, with whether you still need to act.

"TODO" means Moodle still expects something from you (e.g. nothing or only a draft submitted);
"done" means it doesn't (already submitted, or nothing to hand in).

Args:
    days: How many days ahead to look.
    course: Limit to one course (code like "CS-214", id, or name).
    include_past_days: Also show deadlines from the last N days (to catch overdue work).
course_overviewA

Show a course's sections and every item in them (files, assignments, pages, links, forums...) with ids.

Args:
    course: Course code like "CS-214", numeric id, or part of the name.
    section: Only show sections whose number or name matches (e.g. "3" or "Semantics").
open_itemA

Open any course item by id and return its content.

- file (resource): the extracted text. Long PDFs return a page map (one line per page)
  first; then call again with pages="12-14" for just the pages you need
- assignment: instructions, dates, attachments, your submission status and grade
- page: its text
- forum: latest discussions (read one with read_discussion)
- folder: its files (read one with read_file)
- link (url): the target URL
- quiz: open/close dates, time limit, attempts, best grade

Args:
    item_id: The [id ...] from course_overview, search or upcoming_deadlines.
    pages: For PDFs, which pages to read, e.g. "1-5", "2,4,10-12" or "all".
    max_chars: Maximum characters of file text to return; longer PDFs get a page map.
read_fileA

Download a Moodle file (e.g. an assignment attachment or a file in a folder) and return its text.

Long PDFs return a page map first; call again with pages="12-14" for the pages you need.
Code and text files come back as-is. On the user's Mac the file is also saved locally (path in the output).

Args:
    file_url: A moodle.epfl.ch .../pluginfile.php/... URL from open_item, search_in_files or read_discussion.
    pages: For PDFs, which pages to read, e.g. "1-5", "2,4,10-12" or "all".
    max_chars: Maximum characters of text to return; longer PDFs get a page map.
read_discussionA

Read a whole forum thread (all posts, oldest first).

Args:
    discussion_id: The [discussion ...] id from open_item on a forum, or from announcements.
announcementsA

Recent posts in the courses' Announcements (news) forums.

Args:
    days: How far back to look.
    course: Limit to one course (code like "CS-214", id, or name).
gradesA

Your grades in a course: every grade item with score, range, percentage and feedback.

Args:
    course: Course code like "CS-214", numeric id, or part of the name.
searchA

Find course items (files, assignments, pages, links...) and sections by name across your courses.

Matches words in item names, file names and section names (accents and case ignored).

Args:
    query: Words to look for, e.g. "homework 3" or "lecture 5 slides".
    course: Limit to one course; by default searches all ongoing courses.
search_in_filesA

Full-text search inside course files (PDF slides, lecture notes, handouts, code) and pages.

Returns the best-matching pages with a snippet and the exact call to read them, so you can
read only the relevant pages instead of whole files. The first search in a course downloads
and indexes its files (can take a minute); later searches are instant.

Args:
    query: Words that must all appear on the same page, e.g. "big-step semantics".
    course: Limit to one course (recommended); by default searches all ongoing courses.
    max_results: How many matching pages to return.
whats_newA

What changed in your courses: new or edited items and files, new grades, new forum posts.

By default covers the time since you last called whats_new without `since` (or the last
7 days the first time), then remembers now as the new "last check".

Args:
    since: Look back this far instead: "3d", "12h", "2w", or a date like "2026-09-20".
        Doesn't move the "last check" marker.
    course: Limit to one course (code like "CS-214", id, or name).
sync_courseA

Download a course's materials into a local folder, one subfolder per section.

Saves files, folder contents, assignment attachments and pages (as .md), plus an INDEX.md
listing everything with links, due dates and item ids. Only new or changed files are
downloaded, so it's cheap to run again. Nothing on Moodle is changed.

Args:
    course: Course code like "CS-214", numeric id, or part of the name.
    folder: Where to save. Defaults to ~/Moodle/<course code>.
    max_file_mb: Skip files larger than this (e.g. lecture videos).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 12 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues