polyu-estudent-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ESTUDENT_NETID | Yes | Your NetID (e.g., 12345678d) | |
| ESTUDENT_HEADFUL | No | Set to 1 to show browser (debugging) | 0 |
| ESTUDENT_BASE_URL | No | Base URL of eStudent | https://www.polyu.edu.hk/student |
| ESTUDENT_PASSWORD | Yes | Your portal password |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
|
| preview_registrationA | Preview add/drop actions WITHOUT submitting.
|
| confirm_registrationA | Submit add/drop actions for real. Requires the |
| start_course_sniperA | Start an automated course-grab job (restrained; hard frequency floors). mode="open_time": wait until 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 |
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 9 tools
Each tool serves a distinct purpose: registration preview/confirm, viewing timetables/exams/grades, searching subjects, checking session status, and managing sniper jobs. No overlap in functionality.
Most tools use verb_noun pattern (e.g., get_exam_schedule, start_course_sniper), but 'session_status' and 'sniper_status' are noun phrases without a verb, creating inconsistency.
With 9 tools covering registration, schedules, grades, search, and automated grabbing, the count is well-suited to the domain without being overwhelming.
The toolset covers the full registration lifecycle (preview and confirm), all key views (timetable, exam schedule, grades), search, and even automated sniper management. No obvious gaps.