LM

loyaniu/moodle-mcp

Developer tools
42 stars 13 forks Quality 59 Trend 32

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

Overview

A Model Context Protocol (MCP) server implementation that provides capabilities to interact with Moodle LMS. For available Moodle API functions, please refer to the official documentation. 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 Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following 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

README

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
View this README on GitHub

Install

uvx moodle-mcp

Configuration

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