Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ESTUDENT_NETIDYesYour NetID (e.g., 12345678d)
ESTUDENT_HEADFULNoSet to 1 to show browser (debugging)0
ESTUDENT_BASE_URLNoBase URL of eStudenthttps://www.polyu.edu.hk/student
ESTUDENT_PASSWORDYesYour portal password

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
session_statusA

Report whether there is a live authenticated eStudent session.

get_gradesA

Get subject grades and GPA. Optionally filter to a single term.

get_timetableB

Get the class timetable (lecture/tutorial slots, venues, times).

get_exam_scheduleC

Get the examination timetable (date, time, venue, seat).

search_subjectsA

Search subject offerings, two modes (eStudent Subject Search page).

By subject (default): pass query — a subject code ("COMP1011") or a title keyword. By programme: pass department (a hosting-dept code/name like "COMP") AND program (a programme code/name substring like "61425" or "BA (HONS) COMPUTING"); query is ignored in this mode.

term: an academic year/semester label like "2025/26 Semester 1" (by subject defaults to trying each offered term; by programme defaults to the most recent). When a search resolves to exactly one subject, its teaching groups with per-group vacancy are included; broader searches return subject-level results only.

preview_registrationA

Preview add/drop actions WITHOUT submitting.

actions: list of {"action": "add"|"drop", "subject_code": str, "section": str (optional)}. Returns a summary, any conflicts, and a fingerprint that must be passed to confirm_registration.

confirm_registrationA

Submit add/drop actions for real. Requires the fingerprint returned by preview_registration for the SAME actions — otherwise it is rejected.

start_course_sniperA

Start an automated course-grab job (restrained; hard frequency floors).

mode="open_time": wait until open_time_iso (ISO 8601), then submit, retrying every retry_interval_seconds (>=3s) for up to total_duration_seconds (<=30 min). Page timeouts are shortened during the window so a crashed portal costs ~12s per probe. With then_watch=true, an unsuccessful open window falls through to vacancy watching instead of giving up. mode="watch_vacancy": poll every watch_interval_seconds (>=30s) until a vacancy is grabbed. Sub-floor intervals are rejected.

Jobs self-heal: an expired session re-authenticates automatically and a crashed browser is relaunched. A job only ends early on rejected credentials, 5 consecutive page-structure errors (portal redesign), or the portal staying unreachable for 30+ minutes straight. Terminal events raise a macOS notification.

sniper_statusA

List sniper jobs, inspect one by job_id, or stop one (job_id + stop=true).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1708004874a-star/polyu-estudent-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server