Moodle MCP Server
Provides tools for interacting with Moodle LMS, including navigation, course management, assignments, forums, feedback activities, and participants, all through your existing browser session.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Moodle MCP Serverlist my courses"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Moodle MCP
A bridge that lets AI assistants interact with Moodle LMS through your browser. Works with any Moodle instance—including those using SSO/LDAP—because it uses your existing browser session.
Architecture
┌─────────────────────────────────────────────────────────────────────────┐
│ YOUR MACHINE │
├─────────────────────────────────────────────────────────────────────────┤
│ ┌────────────────┐ ┌────────────────────────────────────┐ │
│ │ AI Assistant │ │ Browser (Chrome/Edge) │ │
│ │ (Claude, │ │ ┌──────────────────────────────┐ │ │
│ │ Cursor, etc) │ │ │ Your Moodle (logged in) │ │ │
│ └───────┬────────┘ │ └──────────────────────────────┘ │ │
│ │ MCP Protocol │ ┌──────────────────────────────┐ │ │
│ │ │ │ Browser Extension │ │ │
│ │ │ │ (executes commands securely) │ │ │
│ │ │ └─────────────┬────────────────┘ │ │
└──────────┼───────────────────────┼────────────────┼───────────────────┘
│ │ │ WebSocket
▼ │ ▼
┌──────────────────────────────────┴────────────────────────────────────┐
│ Moodle MCP Server (Hosted) │
│ Routes commands · Never sees your credentials │
└───────────────────────────────────────────────────────────────────────┘Key principle: Your Moodle credentials never leave your browser. The server only routes commands between your AI assistant and the browser extension.
Related MCP server: Chrome MCP Server
Components
Component | Description |
Server ( | Hono-based Node.js server with Google OAuth, JWT auth, WebSocket bridge |
Browser Extension ( | Chrome extension that executes MCP commands in your Moodle session |
MCP Remote ( | Generic stdio-to-HTTP bridge for MCP clients that only support stdio |
Quick Start
For Users (Hosted Service)
Sign up at the hosted service (get URL from your administrator)
Get API key from the dashboard
Install extension from the dashboard
Configure AI client (see Setup Guide)
For Developers (Local)
# Clone and install
git clone https://github.com/arunlakhotia/moodle-mcp.git
cd moodle-mcp/server
npm install
# Configure environment
cp env.example .env
# Edit .env with your Google OAuth credentials
# Start server
npm run devThen:
Load
browser-extension/in Chrome (chrome://extensions→ Developer mode → Load unpacked)Visit
http://localhost:8080/devto create test credentialsConfigure your AI client (see below)
AI Client Configuration
Cursor IDE (with stdio bridge)
Cursor requires stdio-based MCP servers. Use the mcp-remote bridge:
cd mcp-remote && npm installAdd to .cursor/mcp.json:
{
"mcpServers": {
"moodle": {
"command": "npx",
"args": ["tsx", "/path/to/moodle-mcp/mcp-remote/src/index.ts"],
"env": {
"MCP_SERVER_URL": "http://localhost:8080",
"MCP_API_KEY": "your-api-key"
}
}
}
}Claude Desktop (SSE transport)
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"moodle": {
"transport": {
"type": "sse",
"url": "http://localhost:8080/mcp/sse"
},
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}Available Tools
Navigation & Content
Tool | Description |
| Navigate to any Moodle URL |
| Get content from current page |
| Click elements on the page |
| Type into input fields |
| Set HTML in Moodle rich text editors |
Courses
Tool | Description |
| List your enrolled courses |
| Navigate to a specific course |
| Get course activities and resources |
| Get section IDs and names |
Participants & Users
Tool | Description |
| List enrolled users with roles |
| Get enrolled user details |
| Send direct message to a user |
| Send message to multiple users |
Assignments
Tool | Description |
| List assignments with due dates |
| Get assignment details |
| Get submission status |
| Create new assignment |
| Modify assignment settings |
| Grant deadline extension |
| Shift multiple deadlines |
Forums
Tool | Description |
| List forum discussions |
| Search discussions by subject |
| Create new discussion |
| Delete a discussion |
| Get participation statistics |
Feedback Activities
Tool | Description |
| Find any activity by name/type |
| Get response statistics |
Course Management
Tool | Description |
| Rename course sections |
| Add new sections |
| Remove sections |
| Show/hide sections |
| Reorder sections |
| Enable editing mode |
Security & Privacy
🔐 Credentials stay local — Your Moodle session never leaves your browser
🔑 API keys are hashed — Server stores only hashes
🚫 No data storage — Server routes commands only
🔒 HTTPS/WSS — All traffic encrypted in production
🎓 FERPA Compliant — Student PII is masked before reaching AI services
Student Data Protection
Moodle MCP protects student privacy through automatic PII masking:
Your Browser Cloud Server AI Service
───────────── ──────────── ──────────
"John Smith" → "M12345_name" → "M12345_name"
(real name) (masked token) (masked token)Student names, emails, and IDs are replaced with anonymous tokens before leaving your browser. The AI never sees real student information. Learn more →
Documentation
Setup Guide — Detailed setup for various AI clients
Deployment Guide — Self-hosting the server
Architecture — Technical details
FERPA Compliance — Student data privacy & protection
Privacy Quick Reference — One-page privacy summary
License
MIT License — see LICENSE
Acknowledgments
Model Context Protocol by Anthropic
Moodle Learning Management System
University of Louisiana at Lafayette
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/arunl/moodle-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server