Skip to main content
Glama
README.md
# 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.

![License](https://img.shields.io/badge/license-MIT-green)
![Python](https://img.shields.io/badge/python-3.10%2B-blue)
![MCP](https://img.shields.io/badge/MCP-Server-orange)
![Package Manager](https://img.shields.io/badge/uv-fast-purple)

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

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues