moodle-mcp

moodle-mcp

Provides Claude with full access to Moodle learning management systems, enabling interaction with courses, files, assignments, grades, and calendar events. It also supports building Obsidian study vaults from course materials through automated knowledge graph creation.

Category
Visit Server

README

moodle-mcp

Give Claude full access to your Moodle — courses, files, assignments, grades, quizzes, calendar, and more. Build Obsidian study vaults from your lecture notes in one command.

13 tools · 5 prompts · MCP Resources


Quick Start

1. Install

npx moodle-mcp

Or install globally:

npm install -g moodle-mcp

2. Get your tokensee below

3. Add to your MCP client

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on Mac, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "moodle": {
      "command": "npx",
      "args": ["moodle-mcp"],
      "env": {
        "MOODLE_URL": "https://moodle.yourschool.edu",
        "MOODLE_TOKEN": "your_token_here"
      }
    }
  }
}

VS Code (add to .vscode/mcp.json):

{
  "servers": {
    "moodle": {
      "command": "npx",
      "args": ["moodle-mcp"],
      "env": {
        "MOODLE_URL": "https://moodle.yourschool.edu",
        "MOODLE_TOKEN": "your_token_here"
      }
    }
  }
}

Getting Your Token

Option A — Moodle profile page (works everywhere)

  1. Log in to your school's Moodle in a browser
  2. Go to Profile → Security keys (URL: https://moodle.yourschool.edu/user/managetoken.php)
  3. Find the Moodle mobile web service token and copy it
  4. Set MOODLE_TOKEN=<token> in your MCP config

Option B — Username + password (not SSO schools)

If your school uses a regular username/password (not Microsoft/Google/SSO), you can skip the token step entirely:

"env": {
  "MOODLE_URL": "https://moodle.yourschool.edu",
  "MOODLE_USERNAME": "your_username",
  "MOODLE_PASSWORD": "your_password"
}

⚠️ SSO schools: If your school login page redirects to Microsoft, Google, or another identity provider, Option B won't work. Use Option A or C.

Option C — Extract from Moodle mobile app (SSO schools)

  1. Install the Moodle app on your phone and log in with SSO
  2. Go to App settings → About
  3. Tap the version number 5 times to enable developer mode
  4. Go to Developer options → Copy token and copy it
  5. Use that token as MOODLE_TOKEN in Option A

Tools

Tool Description Params
moodle_get_site_info School name, Moodle version, which APIs are enabled
moodle_list_courses All your enrolled courses
moodle_get_course Sections and all activities in a course courseId
moodle_list_resources Files and links, grouped by course section courseId
moodle_list_assignments Assignments with due dates, grouped by section courseId
moodle_get_assignment Submission status and grade feedback assignmentId
moodle_get_grades Full grade report with categories and feedback courseId
moodle_get_calendar_events Upcoming events across courses courseId?, daysAhead?
moodle_list_quizzes Quizzes with time limits and open dates courseId
moodle_get_quiz_attempts Your past attempt grades and states quizId
moodle_list_forums Forum activities in a course courseId
moodle_get_forum_discussions Recent discussions in a forum forumId
moodle_get_notifications Recent notifications (grades, feedback, replies) limit?

Prompts

Use these in any MCP client that supports prompts (Claude Desktop, VS Code with Copilot, etc.):

Prompt Use case Example
summarize-course Full course overview organized by section /summarize-course courseId=42
whats-due Prioritized due dates this week / next week /whats-due or /whats-due courseId=42
build-study-notes Build a linked Obsidian vault from course materials /build-study-notes courseId=42 vaultPath=~/obsidian/finals
exam-prep Topic-by-topic study guide based on grades and quiz results /exam-prep courseId=42
search-notes Natural language search across all course files /search-notes courseId=42 query="derivatives and limits"

Obsidian Finals Prep

Turn your entire semester into a linked knowledge graph in one command.

Setup

  1. Install Obsidian (free, works on Mac/Windows/Linux)
  2. Create a new vault, e.g. ~/obsidian/finals
  3. Make sure moodle-mcp is connected to your MCP client

Build the vault

Use the /build-study-notes prompt in Claude Desktop:

/build-study-notes courseId=42 vaultPath=~/obsidian/finals

Or paste this directly into Claude:

Pull my [Course Name] (course ID 42), read all the lecture notes and slides,
and build a linked Obsidian vault at ~/obsidian/finals — one note per topic,
with [[wikilinks]] between related concepts, a MOC.md index, and tags for each section.

Claude will:

  1. Pull all your course sections, files, assignments, and grades
  2. Read each PDF and document directly via the MCP resources protocol
  3. Write one .md file per section with key concepts, definitions, and examples
  4. Add [[wikilinks]] between related terms across notes
  5. Create a MOC.md (Map of Content) index linking everything

See the graph

  1. Open the vault in Obsidian
  2. Click Graph View (sidebar icon or Cmd+G)
  3. Your entire course appears as a knowledge graph — linked concepts cluster together, isolated topics stand out as things to review

Natural language search

Once the vault is built, you can ask Claude to find specific content:

/search-notes courseId=42 query="the central limit theorem and when to use it"

Claude will look through all your course materials, find the relevant files, read them, and synthesize a direct answer.


Compatibility

Some tools require your Moodle admin to enable specific web services. Run moodle_get_site_info to see which tools are available on your school's Moodle.

Tool Required Notes
moodle_list_courses, moodle_get_course, moodle_list_resources Always available Core Moodle WS
moodle_list_assignments, moodle_get_assignment Admin must enable mod_assign service
moodle_get_grades Admin must enable gradereport_user service
moodle_get_calendar_events Usually available core_calendar service
moodle_list_quizzes, moodle_get_quiz_attempts Admin may need to enable mod_quiz service
moodle_get_forum_discussions Admin may need to enable mod_forum service
moodle_get_notifications Admin may need to enable message_popup service

If a tool isn't available, it returns a helpful message explaining what your admin needs to enable — it won't crash the server.


Contributing

Issues and PRs welcome. Open an issue first for large changes.

MIT License — © 2026 Alexandre Ribeiro

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured