Moodle MCP Server
by peancor
The Moodle MCP Server enables LLMs to interact with the Moodle platform for course management. It allows managing courses, students, assignments, and quizzes through a Model Context Protocol.
Last updated: N/A
Moodle MCP Server
An MCP (Model Context Protocol) server that enables LLMs to interact with the Moodle platform to manage courses, students, assignments, and quizzes.
Features
Student Management Tools
list_students
- Retrieves the list of students enrolled in the course- Displays ID, name, email, and last access time for each student
Assignment Management Tools
get_assignments
- Retrieves all available assignments in the course- Includes information such as ID, name, description, due date, and maximum grade
get_student_submissions
- Examines a student's submissions for a specific assignment- Requires the assignment ID and optionally the student ID
provide_assignment_feedback
- Provides grades and comments for a student's submission- Requires student ID, assignment ID, grade, and feedback comment
Quiz Management Tools
get_quizzes
- Retrieves all available quizzes in the course- Includes information such as ID, name, description, opening/closing dates, and maximum grade
get_quiz_attempts
- Examines a student's attempts on a specific quiz- Requires the quiz ID and optionally the student ID
provide_quiz_feedback
- Provides comments for a quiz attempt- Requires the attempt ID and feedback comment
Requirements
- Node.js (v14 or higher)
- Moodle API token with appropriate permissions
- Moodle course ID
Installation
- Clone this repository:
git clone https://github.com/your-username/moodle-mcp-server.git
cd moodle-mcp-server
- Install dependencies:
npm install
- Create a
.env
file with the following configuration:
MOODLE_API_URL=https://your-moodle.com/webservice/rest/server.php
MOODLE_API_TOKEN=your_api_token
MOODLE_COURSE_ID=1 # Replace with your course ID
- Build the server:
npm run build
Usage with Claude
To use with Claude Desktop, add the server configuration:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"moodle-mcp-server": {
"command": "/path/to/node",
"args": [
"/path/to/moodle-mcp-server/build/index.js"
],
"env": {
"MOODLE_API_URL": "https://your-moodle.com/webservice/rest/server.php",
"MOODLE_API_TOKEN": "your_moodle_api_token",
"MOODLE_COURSE_ID": "your_course_id"
},
"disabled": false,
"autoApprove": []
}
}
}
For Windows users, the paths would use backslashes:
{
"mcpServers": {
"moodle-mcp-server": {
"command": "C:\\path\\to\\node.exe",
"args": [
"C:\\path\\to\\moodle-mcp-server\\build\\index.js"
],
"env": {
"MOODLE_API_URL": "https://your-moodle.com/webservice/rest/server.php",
"MOODLE_API_TOKEN": "your_moodle_api_token",
"MOODLE_COURSE_ID": "your_course_id"
},
"disabled": false,
"autoApprove": []
}
}
}
Once configured, Claude will be able to interact with your Moodle course to:
- View the list of students and their submissions
- Provide comments and grades for assignments
- Examine quiz attempts and offer feedback
Development
For development with auto-rebuild:
npm run watch
Debugging
MCP servers communicate through stdio, which can make debugging challenging. We recommend using the MCP Inspector:
npm run inspector
The Inspector will provide a URL to access debugging tools in your browser.
Obtaining a Moodle API Token
- Log in to your Moodle site as an administrator
- Go to Site Administration > Plugins > Web Services > Manage tokens
- Create a new token with the necessary permissions to manage courses
- Copy the generated token and add it to your
.env
file
Security
- Never share your
.env
file or Moodle API token - Ensure the MCP server only has access to the courses it needs to manage
- Use a token with the minimum necessary permissions