Moodle MCP Server

by peancor

39 183 downloads Not rated yet MIT

About

# 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 ### Course Management Tools - `get_courses` - Retrieves information about courses in Moodle - Supports pagination (`page`, `limit`) to…

Details

License
MIT

Explore

- Course management with pagination and optional filtering by course ID
- Student management: list enrolled students with ID, name, email, last access
- Assignment management: view assignments, submissions, and provide graded feedback
- Quiz management: list quizzes, view student attempts, and offer comments
- All tools operate via the Moodle Web Services REST API
- Configurable for any Moodle site using an API token

- Node.js (v14 or higher)
- Moodle API token with appropriate permissions
- Moodle course ID

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

get_courses

Retrieves information about courses in Moodle

list_students

Retrieves the list of students enrolled in the course

get_assignments

Retrieves all available assignments in the course

get_student_submissions

Examines a student's submissions for a specific assignment

provide_assignment_feedback

Provides grades and comments for a student's submission

get_quizzes

Retrieves all available quizzes in the course

get_quiz_attempts

Examines a student's attempts on a specific quiz

provide_quiz_feedback

Provides comments for a quiz attempt

- get_courses - Retrieves information about courses in Moodle
- Supports pagination (page, limit) to safely fetch all available courses.
- Optionally allows fetching a specific course by providing a courseId.

- list_students - Retrieves the list of students enrolled in the course
- Displays ID, name, email, and last access time for each student

- 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

- 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

An MCP (Model Context Protocol) server that enables LLMs to interact with the Moodle platform to manage courses, students, assignments, and quizzes.

Features

Course Management Tools

- get_courses - Retrieves information about courses in Moodle - Supports pagination (page, limit) to safely fetch all available courses. - Optionally allows fetching a specific course by providing a courseId.

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

1. Clone this repository:

git clone https://github.com/your-username/moodle-mcp-server.git
cd moodle-mcp-server

2. Install dependencies:

npm install

3. 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

4. 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

1. Log in to your Moodle site as an administrator
2. Go to Site Administration > Plugins > Web Services > Manage tokens
3. Create a new token with the necessary permissions to manage courses
4. 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

License

MIT

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.

Videos about Moodle MCP Server

Relevant YouTube tutorials, setups, and demos