Moodle Plugin · Model Context Protocol

Your Moodle now speaks AI.

Moodle MCP turns any Moodle instance into a secure MCP server. AI assistants can query and operate courses, grades and activities in natural language — self-hosted, with OAuth 2.1 login, role-based permissions and a full audit trail.

claude · moodle-mcp@campus.edu
How many students submitted the final project in the Project Management course? → connected via OAuth 2.1 · scope: api.read → discovering function via list_moodle_functions → call_moodle_function · mod_assign_get_submissions ✓ 1,243 of 6,077 enrolled submitted · 89 drafts ✓ recorded in audit trail by prof.smith@campus.edu
AI Assistant Moodle MCP Your Moodle instance
Built for educational IT teams
Self-hosted OAuth 2.1 · role-based permissions Audit log Open protocol
How it works

From install to first command in four steps.

No fragile integrations, no exporting data to third-party clouds. MCP runs inside your Moodle.

01

Install the plugin

Upload the package through Moodle admin, like any other plugin. No external servers.

02

Choose the mode

Read-only or read + write. Define which roles can connect an AI using a native Moodle capability.

03

Connect your assistant

Point the client at the MCP server URL. The user logs in to their own Moodle via OAuth 2.1 and authorises scopes. Works with Claude, ChatGPT and any MCP client.

04

Talk to Moodle

Natural language commands become real actions, every operation logged in the audit trail.

Features

Institutional-grade control from day one.

Built for Moodle administrators: governance, compliance and zero vendor lock-in.

100% self-hosted

The MCP server runs on your own instance. No phone-home: no student data flows to vendor services.

Two-layer permissions

Per-connection scopes plus native Moodle capabilities. The AI acts as the authorising user — it can never do more than they could.

Complete audit trail

15 fields per operation: function called, client IP, duration, error code and argument keys. CSV export for GDPR. Moodle Events API automatically feeds any external log store (Splunk, ELK).

Open protocol

Based on the Model Context Protocol with standard OAuth 2.1. Compatible with any MCP client, no vendor lock-in.

Full Moodle API

Access to any Moodle web service function: hundreds of operations, always within the user's permissions.

Granular per-connection controls

IP allowlist, function allowlist with wildcards and course restriction — configurable per token. Per-minute rate limit. Each connection gets exactly the minimum access it needs.

Use cases

One plugin, three user types served.

Build a discussion forum and 3 tasks from this lesson plan
The AI creates the course structure as a draft, ready for the teacher to review and publish.
How many students submitted the final assignment?
Counts submissions, drafts and graded items directly from the activity, no panel needed.
Summarise this week's forum posts into 5 topics
Read under a restricted scope, without exposing personal data beyond what is necessary.
Which students are at risk of failing?
Crosses grades, submissions and access logs to flag who needs attention.
I didn't understand lesson 6, explain it differently
A tutor that knows the course material, without inventing outside content.
What do I still need to submit this month?
Lists pending tasks and deadlines from the student's own calendar.
Create a revision quiz for module 3
Generates practice questions from content already published in the course.
How have I been performing so far?
Restricted to own data, never to classmates'.
Generate the engagement report by course for this semester
Aggregated query in natural language — no manual report building.
Which courses have had no activity for over 30 days?
Platform hygiene and identification of abandoned courses in seconds.
Enrol this cohort of 60 students in the onboarding course
Batch operation via the Moodle API, under explicit write scope, fully audited.
Show all AI actions from the past week
Complete audit trail, exportable as CSV for compliance.
In action

The AI asks; you control what it can touch.

Pick a request and toggle the scopes. The assistant responds according to what you authorised for this connection.

moodle-mcp · OAuth connection connected

Connection scopes

api.readDiscover and call read-only Moodle functions
api.writeCall any function, including write operations
Security & compliance

The AI joins the conversation. Your data stays home.

Data sovereignty

Everything processed within your infrastructure. GDPR-compliant by design.

OAuth 2.1 login, no shared secrets

Whoever connects logs in to their own Moodle and explicitly authorises scopes. Connections expire, rotate, and are revocable at any time. Only users with the connect permission can authorise.

Audit trail

Complete record of every operation — allowed, denied or errored — exportable as CSV for security and compliance teams.

Granular per-token restrictions

CIDR IP allowlist, wildcard function allowlist and course restriction — configurable per token. Per-minute rate limit stops runaway agents.

Security webhook + native events

Auth failures, access denials and rate limit hits trigger an async webhook. Moodle Events API (Events API) feeds Splunk, ELK or any SIEM with no additional setup.

Audit log · live

14:02prof.smith called call_moodle_function · core_course_get_contents
14:02prof.smith called call_moodle_function · mod_assign_get_submissions
13:47coord.edu listed list_moodle_functions · api.read
13:31admin.it revoked OAuth connection · Claude Desktop
11:15prof.jones denied api.write · read-only mode
10:44185.21.x.x blocked IP not in allowlist
09:12bot-anon blocked rate limit exceeded · 60 req/min
Moodle MCP vs. the free alternative

There is a free version — here is why it is not enough for your institution.

There is an open-source plugin (webservice_mcp) that also connects Moodle to MCP. It is useful for exploring the protocol. For an institution that needs governance, GDPR and security, here is what makes the difference.

Features
Moodle MCP v1.0.0 Stable
webservice_mcp (free)
Authentication
OAuth 2.1 + PKCE, zero config
wstoken exposed in URL
Read / write separation
Per call, automatic from function type
None — all or nothing
IP allowlist per connection
CIDRs per token
Function allowlist per token
Wildcard patterns (core_completion_*)
Course restriction
Course ID list per connection
Rate limiting (req/min)
Configurable per token
Dedicated audit log
15 fields, CSV, client IP, duration
Generic Moodle log
SIEM / log store integration
Moodle Events API → Splunk, ELK — zero config
Security webhook
Async POST on auth failures and rate limits
Privacy API / GDPR
Full — export & deletion per user
Null provider
Token management UI
Admin panel with usage, restrictions, revoke
Manual via database
Claude.ai compatibility
Tested and verified
Open bug (issue #2)
Languages
5 — en, pt-BR, es, fr, de
1 — en
Maturity
v1.0.0 Stable
v0.4.1 Beta
Support
Email (base) + 12-month active support (integration plan)
GitHub issues
See plans & pricing

One-time license, no mandatory subscription.

Pricing

One-time license. No mandatory subscription.

You pay once and the plugin is yours. The first year of updates and support is included.

License
Buy the plugin and install it yourself. For IT teams that go it alone.
$199 one-time
  • Perpetual licence, all features
  • Full Moodle API access
  • OAuth 2.1, permissions & audit trail
  • Documentation & installation guide
  • Email support for questions & bugs
  • Assisted installation & integration
Buy license
Price shown in BRL. Your local currency will be calculated at checkout.

The licence is perpetual on both plans: the plugin is yours forever. On the integration plan, the 12 months of active support are renewable at the end of the period. Without renewal, the plugin keeps working normally.

One Moodle per licence: each key activates on a single Moodle server. To move it to a different server, contact us to migrate the licence.

Frequently asked questions

What IT always asks.

Yes, webservice_mcp is open source and provides basic connectivity. The difference is what it lacks: authentication via wstoken exposed in the URL (vs. OAuth 2.1 + PKCE), no automatic read/write separation, no IP or function allowlists, no course restriction, no rate limiting, no dedicated audit log, no security webhook, and a known Claude.ai incompatibility bug. For personal use or protocol exploration the free version works. For an institution needing governance, GDPR, auditability and granular control, the difference is substantial. See full comparison →

The Model Context Protocol (MCP) is an open protocol that lets AI assistants connect to tools and data sources in a standardised way. Moodle MCP implements this protocol inside your Moodle, exposing controlled actions that any compatible client can use.

Via OAuth 2.1: when connecting, the person logs in to their own Moodle and explicitly authorises scopes. No password or token is shared with the assistant, and only users with the connect permission can authorise. Connections expire, rotate and are revocable at any time.

The MCP server runs on your infrastructure with no phone-home. Only the data the assistant requests, and that the scope authorises, is sent to the AI client you chose to connect. You choose the provider, including self-hosted models.

Moodle 4.1 LTS or higher. The plugin is installed via the admin area like any other Moodle plugin, with no external dependencies.

Only if you enable read + write mode and the user authorises the write scope. By default the plugin exposes no write actions. In any case the AI acts as the user who connected: it never exceeds their native Moodle permissions, and everything is in the audit trail.

Yes. You pay once and use the plugin indefinitely. The first year of updates and support is included; annual renewal is optional and only needed to continue receiving new features.

Yes. We issue invoices and support procurement processes for public and private institutions. Contact our team for volume deals, multiple instances or special conditions.

Give your Moodle an AI interface without giving up control.

One-time licence, self-hosted and GDPR-compliant. Start with read-only mode today.