Skip to main content
Changelog

MoodleMCP 1.0

v1.0.0

First stable release of MoodleMCP: the panel, the hosted MCP server, and the local_mcpconnector plugin.

Protocol and authentication

  • Per-organization MCP endpoint on its own subdomain, over Streamable HTTP in stateless mode: credentials are verified on every request, and a revocation takes effect on the next call.
  • Two authentication paths: OAuth "Sign in with your Moodle" (standard discovery and token-to-resource binding, RFC 8707) for ChatGPT and Claude, and bearer MCP keys (mcpk_…, only their hash is stored) for Cursor, VS Code, Claude Code, scripts, and CI.

Tools

  • 13 curated tools for the common flows and 3 gateway meta-tools (moodle_find_tools, moodle_tool_schema, moodle_run_tool) reaching the remaining 742 functions of Moodle's web service catalog.
  • Every call runs with the key's Moodle user token and passes their role checks; keys support additional restrictions — read-only, allowed tools, allowed courses, and expiry.
  • File uploads by URL with local_mcpconnector_create_resource and local_mcpconnector_create_scorm, plus moodle_request_file_upload for signed temporary transfers (30 minutes, up to 512 MiB).

local_mcpconnector plugin

  • Installation with a license key + panel secret; every plugin↔panel request is signed with HMAC-SHA256 within a ±5 minute window.
  • Role-based user provisioning from Moodle's own administration, with key delivery by email and centralized revocation.
  • Compatible with Moodle 4.2 – 5.1.

Panel

  • Built-in AI chat (Anthropic, OpenAI, or Google) with the same tool catalog, explicit approval of writes, and credit metering.
  • Usage view by key, tool, and source; call details are purged after 90 days while daily aggregates are kept.
  • Panel and documentation in six languages: Spanish, English, French, German, Dutch, and Portuguese.

Security and limits

  • Moodle tokens encrypted at rest with AES-256-GCM; connections to Moodle pinned against SSRF, with a per-request timeout and a streaming response size cap.
  • Per-key and per-IP rate limits, and writes serialized per key through a queue.