MUSTer MCP Server
# MUSTer MCP Server
> An MCP server prepared for MUSTer. Enables LLM interaction with the M.U.S.T. (Macau University of Science and Technology) campus system.




English | [简体中文](README_CN.md)
Now, LLMs can automatically log in to Wemust and Moodle, retrieve class schedules, query course PPTs, assignments, view to-do items, download course materials, and automatically open pages.
## Tools Overview
- `get_class_schedule`: **Check Schedule**. Directly fetches this week's class arrangements.
- `get_pending_events`: **Check DDL**. Lists upcoming assignments and to-dos on Moodle.
- `get_all_courses`: **List Courses**. Gets the names and links of all courses on the Moodle dashboard.
- `get_course_content`: **Check Details**. Reads assignment or quiz information within specific courses.
- `download_resource`: **Download Courseware**. Downloads files from Moodle resource pages (especially convenient for bulk downloading PPTs). This also allows the large model to select a specific folder.
- `open_URL_with_authorization`: **Open without password**. Directly pops up an automatically logged-in Chrome window, no need to manually enter account password, automatically opens the specified page.
- `get_current_time`: Gets the current system timestamp.
## Environmental Dependencies
- Python 3.12+
- Locally available Chrome/Chromedriver (for Selenium).
- Environment variables: `MUSTER_USERNAME`, `MUSTER_PASSWORD` (required); `MUSTER_DOWNLOAD_PATH` (optional, default download path, defaults to `~/Downloads`).
## Installation
1) Install [uv](https://docs.astral.sh/uv/) (a fast Python package manager).
2) Clone the repository and install dependencies:
```bash
git clone https://github.com/Cosmostima/MUSTer_MCP
cd MUSTer_MCP
uv sync
```
## MCP Client Configuration Example
```json
{
"mcpServers": {
"muster": {
"command": "UV_PATH_HERE",
"args": [
"--directory",
"MCP_FOLDER_PATH_HERE",
"run",
"main.py"
],
"env": {
"MUSTER_USERNAME": "YOUR_ID_HERE",
"MUSTER_PASSWORD": "YOUR_PASSWORD_HERE"
}
}
}
```
If you need to customize the default download path, you can add `MUSTER_DOWNLOAD_PATH` :
```json
{
"mcpServers": {
"muster": {
"command": "UV_PATH_HERE",
"args": [
"--directory",
"MCP_FOLDER_PATH_HERE",
"run",
"main.py"
],
"env": {
"MUSTER_USERNAME": "YOUR_ID_HERE",
"MUSTER_PASSWORD": "YOUR_PASSWORD_HERE",
"MUSTER_DOWNLOAD_PATH": "/Users/cosmos/Desktop/"
}
}
}
```TDQS
Scored across 7 tools
Most tools have distinct purposes targeting different Moodle functionalities (courses, schedule, content, events, resources), but 'get_all_courses' and 'get_course_content' could be slightly confused as both relate to course data. The descriptions clarify that one lists courses and the other gets detailed content for a specific course, preventing major misselection.
All tool names follow a consistent 'verb_noun' pattern with snake_case (e.g., download_resource, get_all_courses, open_URL_with_authorization). The naming is predictable and readable throughout the set, with no deviations in style or convention.
With 7 tools, this server is well-scoped for a Moodle integration, covering core student workflows like accessing courses, schedules, content, events, and resources. Each tool earns its place without feeling bloated or insufficient for the domain.
The toolset provides strong coverage for viewing and downloading Moodle data, including courses, schedules, content, events, and resources, with authentication support. A minor gap exists in write operations (e.g., submitting assignments or posting to forums), but agents can work around this for typical student tasks.