Moodle-MCP
About
A Model Context Protocol (MCP) server implementation that provides capabilities to interact with Moodle LMS
Explore
- 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:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Moodle-MCPCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
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
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}"
}
}
}
> 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
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



