Moodle Mcp

io.github.G36maid由 GitHub 帳號 G36maid 發布v0.2.1更新於 Oct 24, 2026

面向LLM代理程式的Moodle LMS——課程、作業、檔案、提交集於一個靜態二進位檔案中。

AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。

原文描述

Moodle LMS for LLM agents — courses, assignments, files, submissions in one static binary.

已驗證STDIO僅桌面AI 與機器學習

概覽

Moodle 的本機 MCP 服務;無需登入;STDIO。

暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Moodle Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[moodle-mcp hero banner]

[CI] [Codecov] [Release] [crates.io] [License: MIT] [Rust] [MCP] [Release]

English | 繁體中文 | 简体中文 | 日本語 | Español | Deutsch | Português | Français

A Model Context Protocol server that lets LLM agents use a real Moodle LMS — read courses, fetch assignment PDFs, write code, upload and submit — through a single static binary.

mcp-name: io.github.G36maid/moodle-mcp

Built in Rust on the official MCP SDK (rmcp). Verified live against Moodle 3.7, 4.5 and 5.2; designed for 3.7 → 5.x.

✅ Why

A generic chatbot has no way into your Moodle, so every study task stays manual — five browser tabs to answer "what's due this week?", PDFs re-uploaded by hand, forums and grades copy-pasted one page at a time.

moodle-mcp signs the agent in as you. 20 typed tools cover the full student journey, and the agent chains them by itself — without ever opening a browser:

  • Batteries included — document conversion, HTML → markdown, an auth CLI and an opt-in escape hatch in one binary: no plugins, no helper scripts, no second runtime
  • Agent-native — tools take and return local file paths instead of base64; every result embeds the IDs for the next call; errors are plain-language and suggest the fix
  • Safe by default — write tools confirm with you first, submissions stay drafts until you say so; quiz-taking is intentionally not provided
  • Version-adaptive — verified against Moodle 3.7 and designed for 4.x/5.x; response differences between versions are absorbed automatically
  • One static binary — no runtime dependencies

🚀 Quick start

Needs a Moodle 3.7 → 5.x account on a site that allows the mobile-app web service (most do — see prerequisites).

bash
# 1. Installcargo install moodle-mcp        # or a prebuilt binary / one-click .mcpb — no Rust needed
# 2. Log in once — prints MOODLE_URL and MOODLE_TOKENmoodle-mcp auth
# 3. Connect your client (Claude Code shown; Codex/OpenCode/pi below)claude mcp add moodle \  --env MOODLE_URL=https://moodle.example.com \  --env MOODLE_TOKEN=your-token \  -- /path/to/moodle-mcp
# 4. Open a chat and ask:#    "What's due in the next two weeks? Plan my studying around it."

Or paste this into your agent and let it do every step (it will open moodle-mcp auth in its terminal — type your school credentials there):

text
Set up moodle-mcp (github.com/G36maid/moodle-mcp): read docs/src/installation.mdand docs/src/configuration.md from the repo's main branch first. Then installthe binary for my platform, run `moodle-mcp auth` in the terminal so I cantype my school credentials when it prompts, and register the server in yourown MCP config using the snippet for your harness. Never store or repeat mycredentials; ask before anything global.

Prebuilt binaries, SSO login, config snippets for every client, and the full environment-variable reference: Installation · Getting Started · Configuration

💬 What the agent can do

All of these work with no further setup — the agent discovers the tools from their descriptions and chains them itself:

You sayThe agent chains
"Finish my Information Security HW1: read the assignment brief and the attached PDF, work through the problems, and submit a draft."get_assignment (brief + attachments) → fetch_file (PDF → markdown, math included) → solves it → writes the answer file → upload_file → submit_assignment → get_assignment (verify submitted ✓)
"Based on upcoming deadlines and course materials, build me a complete study plan for the next two weeks."get_schedule (all deadlines) → get_course_overview per course → day-by-day plan balanced against due dates
"I missed what happened in Data Communication this week — catch me up, including the announcements forum."get_notifications + get_forum_discussions → get_discussion_posts → synthesized weekly digest
"Prep me for the Software Engineering quiz: what did the teacher post about it?"get_course_overview (quiz entry) → get_assignment (requirements) → related forum threads

🔄 How the agent works

The tools mirror how you navigate Moodle — each level's output embeds the IDs for the next:

mermaid
flowchart TD    Q["💬 prompt (intent only)"] --> LC["list_courses(search?)<br/>find the course"]    LC --> OV["get_course_overview(course_id)<br/>markdown map: sections · files ·<br/>assignments · quizzes · forums · grades"]    OV --> FD["get_forum_discussions(forum_id)<br/>→ get_discussion_posts(discussion_id)"]    OV --> AS["get_assignment(assignment_id)<br/>brief · attachments · submission · grade"]    AS --> FF["fetch_file(url)<br/>assignment PDF → readable markdown"]    FF --> WK["agent works:<br/>answers · code · report on disk"]    WK --> UP["upload_file(path, filename)<br/>solution → draft area → item_id"]    UP --> SB["submit_assignment(assignment_id, item_id?, finalize?)<br/>save draft or turn in"]    SB --> VF["get_assignment<br/>verify: submitted ✓ files ✓"]    OV --> SC["get_schedule(time window)<br/>deadlines → study plan"]    OV --> GR["get_grades(course_id)<br/>graded items + feedback"]

Everything the dedicated tools don't cover is reachable through the call_ws_function + list_ws_functions escape hatch — full coverage of the ~350 functions a typical token can call (20 + 2 = 22 in total; the escape hatch is opt-in via MOODLE_ENABLE_WS_FUNCTION=true).

📚 Documentation

Full documentation lives at moodle.ntnu.cc/docs (mdBook — mdbook serve docs to read locally):

PageContents
Getting Startedfrom zero to the first prompt; no MCP experience assumed
Installationprebuilt binaries, cargo, from source
Configurationevery environment variable; config snippets for Claude Code, Codex, OpenCode, and pi
Toolsthe full 22-tool reference and the ID flow between them
Security & Authenticationtoken lifecycle, transport and write safety
Changelogrelease notes, version by version
Developmentarchitecture tour, tests, release process
Aboutwhat moodle-mcp, MCP, and Moodle are

🧰 Development

bash
cargo test                 # unit + wiremock integration + MCP protocol testscargo clippy --all-targetscargo fmt -- --checkcargo build --release

Project documentation lives in docs/ — mdBook, formatted with Prettier (see docs/README.md); preview with mdbook serve docs.

The landing page lives in site/ — Astro 7 + TypeScript (cd site && npm install && npm run dev, build with npm run build).

🔐 Security

Use HTTPS — the token travels with every request. It never appears in tool output or errors, is only injected into same-site Moodle URLs, and write tools confirm with you before they act. Full details: Security & Authentication.

📄 License

MIT — see LICENSE.

來源:README.md,提交 18bd177

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.2.1最新Oct 20, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分