Moodle-MCP
June 27, 2026 ยท View on GitHub
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)
- Create your own
.envfile from.env.example - Assume you have
uvinstalled, runuv add "mcp[cli]"to install the MCP CLI tools - Run
mcp install main.py -f .envto 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
- Navigate to your Moodle token management page
https://{your-moodle-url}/user/managetoken.php - Use the token with
Moodle mobile web servicein theServicecolumn - Add this token to your
.envfile
