Moodle MCP Server

by peancor

39 stars
183 downloads
Not rated
GitHub

Description

# 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 -…

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

Author
peancor
GitHub stars
39
Downloads
183
Categories
Other

- 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

Install by cloning the repository, running npm install, creating a .env file with MOODLE_API_URL, MOODLE_API_TOKEN, and MOODLE_COURSE_ID, then building with npm run build. Configure Claude Desktop by adding the server configuration (with paths to Node.js and the built index.js) to the claude_desktop_config.json file. Once configured, Claude can invoke tools such as get_courses, get_assignments, list_students, get_student_submissions, provide_assignment_feedback, get_quizzes, get_quiz_attempts, and provide_quiz_feedback.

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