AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Moodle Mcp

mcp-snaw80-moodle-mcp · by Snaw80

MCP server exposing Moodle Web Services to Claude, Cursor, and other AI assistants

No reviews yet
0 installs
21 views
0.0% view→install

Install

$ agentstack add mcp-snaw80-moodle-mcp

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-snaw80-moodle-mcp)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Moodle Mcp? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

mcp-moodle

An MCP server that exposes Moodle Web Services to any MCP-compatible AI assistant — Claude Code, Claude Desktop, Cursor, Codex, and others.

Ask your assistant things like "what's due this week?", "list my courses", "download the slides from CS101 week 3" — without leaving the chat.

Features

  • site_info — verify the token and get the authenticated user
  • list_my_courses — courses you're enrolled in
  • get_course_contents — sections, modules, file URLs
  • search_courses — search the public catalog
  • list_assignments — assignments across one or all courses
  • list_quizzes — quizzes/QCMs in one or all visible courses
  • get_quiz_qcm_content — rendered QCM questions, readable text, and images
  • upcoming_events — calendar deadlines and sessions
  • get_user_grades — your grades for a course
  • download_file — save any Moodle file locally (token appended automatically)

Works with any Moodle 3.5+ instance that has Web Services enabled.

Install

The recommended way is uv — no virtualenv to manage:

# One-off run (no install)
uvx mcp-moodle

# Or persist as a tool
uv tool install mcp-moodle

Plain pip works too:

pip install mcp-moodle

Update

If you installed with uv tool install, upgrade to the latest published version with:

uv tool upgrade mcp-moodle

If you run it one-off with uvx, force a fresh fetch with:

uvx --refresh mcp-moodle

For pip installs:

pip install -U mcp-moodle

Get a token

Moodle Web Services require a personal token. The package ships a helper that handles every common login flow — native accounts, SSO (Microsoft, Google, SAML, OAuth), or manual paste:

# Default: opens a Chromium window, you complete SSO, token is captured
uvx --from "mcp-moodle[token]" mcp-moodle-token https://moodle.example.org

# Native (non-SSO) account
uvx --from "mcp-moodle[token]" mcp-moodle-token https://moodle.example.org \
  --method local --user jdoe

# Headless server fallback (paste the moodlemobile:// URL by hand)
uvx --from "mcp-moodle[token]" mcp-moodle-token https://moodle.example.org \
  --method manual-mobile

The token is written to ./.env (chmod 600) as MOODLE_URL and MOODLE_TOKEN. Pass --stdout to print it to stdout instead.

> The [token] extra pulls in Playwright. First run downloads Chromium > (~150 MB, one-time). Skip the extra if you only ever use --method local, > --method web, or --method manual-mobile.

Configure your MCP client

Claude Code

claude mcp add moodle \
  --env MOODLE_URL=https://moodle.example.org \
  --env MOODLE_TOKEN=your_token_here \
  -- uvx mcp-moodle

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "moodle": {
      "command": "uvx",
      "args": ["mcp-moodle"],
      "env": {
        "MOODLE_URL": "https://moodle.example.org",
        "MOODLE_TOKEN": "your_token_here"
      }
    }
  }
}

Cursor / other clients

Any MCP client that supports stdio servers works the same way: command uvx, args ["mcp-moodle"], env MOODLE_URL and MOODLE_TOKEN.

Verify it works

In your MCP client, ask: "call the moodle siteinfo tool"_. You should see your name, username, and the site URL.

Quiz / QCM content

Use list_quizzes to find quiz instance ids, then call get_quiz_qcm_content with the quiz id. The tool reuses the latest unfinished attempt when one exists. If no unfinished attempt exists, it returns requires_attempt_creation: true instead of starting an attempt silently; ask the user for permission, then call again with start_if_needed: true.

Each returned question keeps Moodle's raw html and also includes:

  • text — cleaned readable text with formula/image labels from alt/title
  • images — image metadata with the original url and a token-free

download_url that can be passed to download_file

download_file automatically converts Moodle pluginfile.php URLs to the token-aware webservice/pluginfile.php form before downloading.

Development

git clone git@github.com:Snaw80/moodle-mcp.git
cd moodle-mcp
uv sync --all-extras
uv run mcp-moodle

Security notes

  • Your token is the equivalent of a password for Moodle Web Services — keep

.env out of version control (the included .gitignore already does this).

  • The server reads MOODLE_TOKEN from the environment and never logs it.
  • download_file appends the token to the URL; that URL is not logged either,

but be mindful if your client echoes tool arguments.

License

MIT — see [LICENSE](LICENSE).

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.