A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Model Context Protocol server giving AI assistants live access to moodledev.io docs, Hooks API, capabilities, XMLDB, and
Model Context Protocol server for Moodle development. Plug into Claude Desktop, Cursor, Continue, Cline, or any MCP-capable assistant — get live
moodledev.iodocumentation lookups right in your editor.
Companion to claude-moodle-dev — that plugin teaches AI assistants the Moodle conventions; this server gives them live access to the canonical docs.
Ten MCP tools, hardened to survive site redesigns:
| Tool | Purpose |
|---|---|
search_moodle_docs(query, limit=5, offset=0, version?) | Search moodledev.io. Synonym expansion, quoted-phrase boost, BM25 + trigram-cosine rerank, pagination, optional version filter (4.4, 4.5, …). Optional Algolia DocSearch fast-path. |
fetch_moodle_page(url) | Pull a single page in full — body text + headings. Rejects off-host URLs, non-http schemes, and path traversal. |
get_hooks_api_listeners() | Surface the core Hooks API index + detected hook classes. |
get_capability_docs(component?) | Access API lookup with a RISK_* quick-reference card; optional component scope. |
lookup_db_xmldb(query) | Focused XMLDB / database schema search. |
list_plugin_types() | Table of every Moodle plugin type with one-line hints + docs URL. |
get_version_info() | Current Moodle versions parsed from /general/releases. |
search_tracker(query, limit=5, affects_version?, fix_version?) | Issue search against tracker.moodle.org (Jira), now with version filters. |
list_ws_functions() | List Moodle Web Services functions available to the configured instance token. Requires MOODLE_URL + MOODLE_TOKEN. |
call_ws_function(function, args) | Invoke a Moodle WS function against a real instance. SSRF-guarded, function-name allowlisted, refuses private/loopback hosts unless explicitly overridden. |
Plus MCP resources (moodle://docs/apis/... for one-click page reads), prompts (moodle-plugin-skeleton, moodle-capability-review, moodle-hooks-migration, explain-capability, find-endpoint, explain-plugin-type, xmldb-upgrade, diagnose-mdl), tool annotations (readOnlyHint, destructiveHint) for client safety, and progress notifications during multi-fetch searches.
No API keys required for docs. Pulls the public sitemap, caches it on disk (~/.cache/moodle-mcp/), scores against your query, fetches top pages concurrently with retry + conditional GET + Retry-After header respect.
| Variable | Purpose |
|---|---|
MOODLE_URL | Base URL of a real Moodle instance (https). Enables WS tools. |
MOODLE_TOKEN | WS token for that instance. |
MOODLE_WS_ALLOW_INSECURE | Set to 1 to permit http:// or private/loopback hosts (local dev only). |
MOODLE_DOCS_ALGOLIA_APP_ID | Algolia DocSearch app ID. Enables higher-precision recall over sitemap BM25. |
MOODLE_DOCS_ALGOLIA_API_KEY | Algolia public search key. |
MOODLE_DOCS_ALGOLIA_INDEX | Index name (default: moodledev). |
moodle-mcp --version
moodle-mcp --check # diagnostic: fetch sitemap + sample page, exit
moodle-mcp --log-level DEBUG
docker build -t moodle-mcp .
docker run --rm -i moodle-mcp
pipx install moodle-mcp
git clone https://github.com/SaadRahman01/moodle-mcp
cd moodle-mcp
pipx install .
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"moodle": {
"command": "moodle-mcp"
}
}
}
Restart Claude Desktop. Ask: "Search the Moodle docs for how to add a capability."
claude mcp add moodle moodle-mcp
~/.cursor/mcp.json:
{
"mcpServers": {
"moodle": { "command": "moodle-mcp" }
}
}
~/.continue/config.yaml:
mcpServers:
- name: moodle
command: moodle-mcp
Spawn moodle-mcp as a stdio MCP server. No extra arguments required.
query
│
▼
┌─────────────────────────────────────────┐
│ fetch sitemap.xml (cached per session)│
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ score URLs by slug-token overlap │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ fetch top N pages → extract main text │
└─────────────────────────────────────────┘
│
▼
markdown bundle (title, URL, excerpt)
No external search index. No API key. The only network dependency is https://moodledev.io being reachable.
lookup_capability(name) — resolve capability → metadata + risk bitmasklookup_hook(name) — Hooks API 4.4+ listener signaturesvalidate_version_php(path) — local lintlookup_db_field(table, column) — XMLDB metadataVote / request: open an issue.
python3.11 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest
ruff check .
PRs welcome. Add a new tool by:
src/moodle_mcp/<your_module>.py.src/moodle_mcp/server.py.tests/.MIT.
Built by Saad Rahman. Companion of claude-moodle-dev. Powered by the Model Context Protocol and the Moodle Developer Documentation.
A trilingual (繁中 / English / 简中) learning roadmap for agentic AI: from LLM basics to multi-agent systems, with 240+ cura
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
MCP server integration for DaVinci Resolve Studio