Skip to main content
Glama
README.md
# Moodle MCP Server

A Model Context Protocol (MCP)-compliant middleware server that connects Moodle LMS with Large Language Models (LLMs).

This project provides an AI-powered interface for interacting with Moodle through a web-based chatbot. It acts as a middleware layer between Moodle, an LLM service, and the user interface.

## Project Overview

The Moodle MCP Server was developed as an application project to explore the integration of artificial intelligence with Moodle LMS.

The system uses the Model Context Protocol (MCP) to provide a structured connection between Moodle data and a Large Language Model. It allows users to interact with Moodle-related information through a conversational interface.

The project includes:

- A Node.js and Express server
- Moodle API integration
- Model Context Protocol (MCP) integration
- Integration with OpenAI-compatible LLM endpoints
- A web-based chatbot interface
- Evaluation scripts
- Docker and Docker Compose support
- Project documentation, survey results, reports, and presentations

## Key Features

- Connects Moodle LMS with an AI assistant
- Uses the Model Context Protocol (MCP)
- Supports OpenAI-compatible LLM endpoints
- Provides a browser-based chatbot interface
- Uses Moodle Web Service authentication
- Supports environment-based configuration
- Includes evaluation scripts
- Supports Docker-based deployment
- Stores configuration securely using environment variables

## Technology Stack

- Node.js
- JavaScript
- Express.js
- Model Context Protocol (MCP)
- Moodle LMS Web Services
- OpenAI-compatible LLM APIs
- HTML
- Docker
- Docker Compose

## Project Structure

```text
.
├── docs/
│   ├── Project Report
│   ├── Individual Contributions
│   ├── Moodle Chatbot Survey Summary
│   ├── Questions and Research Material
│   └── Student Survey Data
│
├── Presentations/
│   └── Project presentation files
│
├── scripts/
│   └── run-eval.js
│
├── src/
│   ├── agent/
│   │   └── agent.js
│   │
│   ├── moodle/
│   │   └── client.js
│   │
│   ├── public/
│   │   └── index.html
│   │
│   ├── tools/
│   │   └── index.js
│   │
│   └── server.js
│
├── .dockerignore
├── .env.example
├── .gitignore
├── docker-compose.yml
├── Dockerfile
├── package.json
└── package-lock.json