Moodle-MCP

by loyaniu

23 stars
282 downloads
Not rated
GitHub

About

A Model Context Protocol (MCP) server implementation that provides capabilities to interact with Moodle LMS

Details

Author
loyaniu
GitHub stars
23
Downloads
282
Categories
Other

- Retrieve enrolled courses and their content sections.
- Search across all course materials by query string.
- Get assignments, upcoming deadlines, and overdue tasks.
- Analyze assignments and extract requirements.
- View grades, course progress, and study load.
- Generate aggregated overviews like semester dashboard and daily briefing.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Moodle-MCP
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install using uv and the MCP CLI, or run via uvx. Configure environment variables MOODLE_URL (pointing to the Moodle web service endpoint) and MOODLE_TOKEN. Use mcp install main.py -f .env to add to Claude, or edit claude_desktop_config.json with the uvx method.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "moodle-mcp": {
            "moodle-mcp": {
                "command": "uvx",
                "args": [
                    "moodle-mcp"
                ],
                "env": {
                    "MOODLE_URL": "https://{your-moodle-url}/webservice/rest/server.php",
                    "MOODLE_TOKEN": "{your-moodle-token}"
                }
            }
        }
    }
}

McpServers

{
    "moodle-mcp": {
        "command": "uvx",
        "args": [
            "moodle-mcp"
        ],
        "env": {
            "MOODLE_URL": "https://{your-moodle-url}/webservice/rest/server.php",
            "MOODLE_TOKEN": "{your-moodle-token}"
        }
    }
}

Moodle-MCP

> A Model Context Protocol (MCP) server implementation that provides capabilities to interact with Moodle LMS.

Features

The server exposes the following tools.

Courses & content

| Tool | Description |
| --- | --- |
| get_my_courses | Get all courses the current user is enrolled in |
| get_course_content | Get sections and modules for a specific course by its ID |
| search_course_materials | Search across all course materials by query string |
| get_course_announcements | Get announcements from course news forums, optionally filtered by course ID |
| get_recent_activity | Get recent activity and updates across courses since a given time |

Assignments & deadlines

| Tool | Description |
| --- | --- |
| get_assignments | Get assignments for courses, optionally filtered by course IDs |
| get_assignment_status | Get submission and grading status for a specific assignment |
| get_upcoming_deadlines | Get upcoming assignment deadlines across all courses, sorted by due date |
| get_overdue_assignments | Get unsubmitted assignments past their due date, most overdue first |
| get_actionable_tasks | Get a prioritized list of tasks needing action, sorted by urgency |
| analyze_assignment | Analyze an assignment: status, requirements, materials, progress, deadline |
| extract_assignment_requirements | Extract requirements, deliverables, constraints, and evaluation criteria from an assignment |
| find_relevant_materials | Find course content relevant to an assignment, ranked by relevance |
| decompose_task | Break an assignment into subtasks with effort, dependencies, and critical path |
| create_implementation_plan | Build a step-by-step plan with timeline, resources, milestones, and risks |

Grades & progress

| Tool | Description |
| --- | --- |
| get_grades | Get a grade overview for all courses, or detailed grades for one course |
| get_course_progress | Get progress and completion for one course or all courses |
| get_course_health | Health check for a course: progress, grades, unsubmitted and overdue counts |
| get_study_load | Analyze assignment distribution by week to identify heavy weeks |

Aggregated overviews

| Tool | Description |
| --- | --- |
| get_upcoming_events | Get upcoming events from Moodle |
| semester_dashboard | Combined overview of courses, upcoming deadlines, and grades |
| daily_briefing | Daily summary of overdue count, today's deadlines, recent grades, events, and tasks |
| weekly_review | Weekly summary of submitted/graded counts, deadlines, overdue count, and progress |
| ask_moodle | Ask a natural language question and have it routed to the right data sources |

API Reference

For available Moodle API functions, please refer to the official documentation.

Setup Instructions

Method 1: Using mcp CLI (recommended)

1. Create your own .env file from .env.example
2. Assume you have uv installed, run uv add "mcp[cli]" to install the MCP CLI tools
3. Run mcp install main.py -f .env to add the moodle-mcp server to Claude app

Method 2: Using uvx

Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following

{
  "mcpServers": {
    "moodle-mcp": {
      "command": "uvx",
      "args": ["moodle-mcp"],
      "env": {
        "MOODLE_URL": "https://{your-moodle-url}/webservice/rest/server.php",
        "MOODLE_TOKEN": "{your-moodle-token}"
      }
    }
  }
}

Authentication

Getting your Moodle token

1. Navigate to your Moodle token management page https://{your-moodle-url}/user/managetoken.php
2. Use the token with Moodle mobile web service in the Service column
3. Add this token to your .env file

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.