ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Moodle MCP

โดย fabioovรุ่น 0.1.1i★ –iรันบนเครื่อง
ชื่อใน registryio.github.fabioov/moodle-mcp

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Read-only Moodle server: assignments, deadlines, grades, courses, forums, notifications.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เกม กีฬา อาหาร และการเรียน
  • ต้องใส่ค่าเหล่านี้: MOODLE_URL, MOODLE_TOKEN

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต

ต้องเตรียมก่อน

  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "moodle": {
      "command": "npx",
      "args": [
        "-y",
        "@fabioov/moodle-mcp"
      ],
      "env": {
        "MCP_TRANSPORT": "ใส่ค่าของคุณ",
        "MOODLE_URL": "ใส่ค่าของคุณ",
        "MOODLE_TOKEN": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add moodle --env MCP_TRANSPORT='ใส่ค่าของคุณ' --env MOODLE_URL='ใส่ค่าของคุณ' --env MOODLE_TOKEN='ใส่ค่าของคุณ' -- npx -y @fabioov/moodle-mcp

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "moodle": {
      "command": "npx",
      "args": [
        "-y",
        "@fabioov/moodle-mcp"
      ],
      "env": {
        "MCP_TRANSPORT": "ใส่ค่าของคุณ",
        "MOODLE_URL": "ใส่ค่าของคุณ",
        "MOODLE_TOKEN": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "moodle": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@fabioov/moodle-mcp"
      ],
      "env": {
        "MCP_TRANSPORT": "ใส่ค่าของคุณ",
        "MOODLE_URL": "ใส่ค่าของคุณ",
        "MOODLE_TOKEN": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • MCP_TRANSPORT env
    Run over stdio for local clients
  • MOODLE_URL จำเป็น env
    Root URL of your Moodle site, e.g. https://moodle.example.edu
  • MOODLE_TOKEN ความลับ จำเป็น env
    Your Moodle web service token (Preferences > Security keys)

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub fabioov ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เกม กีฬา อาหาร และการเรียนi

  • ดาวมากกว่า 0% ของอีก 1285 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 93% ของอีก 1285 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 1285 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Moodle MCP ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: MOODLE_URL, MOODLE_TOKEN

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.1) เข้า registry เมื่อวานซืน

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Joinable, Castos MCP by usefulapi, RSS.com MCP by usefulapi

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Joinable

โดย Noju-io

Make any game joinable: pick the pattern, get the snippet, run a two-player self-test.

รันบนเครื่องอัปเดต วันนี้
ติดตั้ง

Read podcasts and episodes; create and update episodes; manage private subscribers in Castos.

รันบนคลาวด์อัปเดต วันนี้
ติดตั้ง

Read podcasts and episodes; create and edit episodes, chapters and transcripts in RSS.com.

รันบนคลาวด์อัปเดต วันนี้
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

Moodle MCP

An open source, read-only MCP server for Moodle. Connect it to Claude and ask about your assignments, deadlines, grades, courses, forums and notifications in plain language.

Not affiliated with or endorsed by Moodle Pty Ltd. "Moodle" is a trademark of its owner.

What you can ask

  • "Which assignments do I still have to hand in this month?"
  • "What's due this week, and what have I already submitted?"
  • "What are my grades in Machine Learning?"
  • "Any new announcements in my courses?"
  • "Show me the sections and activities of my Computer Graphics course."

Tools

All tools are read-only and return concise, readable output.

ToolWhat it doesParameters
get_site_infoValidates the token; site, Moodle version and current user–
list_coursesYour courses (current ones by default)includePast?
get_course_contentsSections and activities of a course. Each module has id and instancecourseId
list_assignmentsAssignments with due dates, sorted by due datecourseId?, upcomingOnly?, limit? (25)
get_assignment_statusSubmission/grading status, grade and feedback commentsassignmentId
get_upcoming_deadlinesCalendar events + assignments in the next N days, each assignment marked submitted or pendingdays? (14), onlyPending?
get_gradesGrade items of a coursecourseId
list_forum_discussionsRecent discussions of a forumforumId (the instance from get_course_contents)
get_notificationsRecent Moodle notifications–

Requirements

  • A Moodle site with Web Services / mobile app access enabled (Moodle 4.x; developed against 4.5).
  • Your own web service token (below). Functions your institution disables simply return an error for that tool.
  • Node 20+ for the server (Node 22+ to deploy with Wrangler), or Docker, or a free Cloudflare account.

Setup

1. Get your Moodle URL and token
  • URL: the root of your Moodle, without a page or /webservice, e.g. https://moodle.example.edu (if Moodle lives in a subfolder, include it: https://example.edu/moodle).
  • Token: in Moodle, *Preferences → Security keys* shows a key for Moodle mobile web service. Some sites only show a label there; *Reset* generates a new key (and signs out your Moodle mobile app). Alternatively, if you log in with a Moodle username and password (not SSO), request one: curl -s "$MOODLE_URL/login/token.php" -d username=... --data-urlencode password=... -d service=moodle_mobile_app (type the password interactively so it doesn't end up in your shell history).
2. Configure

Copy .env.example to .env and fill in MOODLE_URL, MOODLE_TOKEN and MCP_AUTH_SECRET (generate the latter with openssl rand -hex 24). .env is git-ignored.

3. Run it, pick one

Cloudflare Workers (free, always on, no domain needed): recommended

npm ci

npx wrangler login npx wrangler secret put MOODLE_URL # https://your.moodle.edu npx wrangler secret put MOODLE_TOKEN # your Moodle web service token npx wrangler secret put MCP_AUTH_SECRET # openssl rand -hex 24 npm run deploy # prints https://moodle-mcp. .workers.dev

Check Cloudflare's current free-tier limits. Try it locally first by copying your `.env` values to a

git-ignored .dev.vars and running npm run dev:worker.

Docker / Node (self-hosted)

docker build -t moodle-mcp . && docker run --env-file .env -p 3000:3000 moodle-mcp

or: npm ci && npm run build && npm start

Then expose it over HTTPS (for example with a Cloudflare Tunnel or Tailscale Funnel).

Local only (Claude Desktop / Claude Code, stdio): no install needed:

MCP_TRANSPORT=stdio MOODLE_URL=https://your.moodle.edu MOODLE_TOKEN=... npx -y @fabioov/moodle-mcp

MCP_AUTH_SECRET is not needed in this mode.

4. Add it to Claude
  • Claude.ai: *Settings → Connectors → Add custom connector*. URL https:// /mcp, choose No sign-in, then *Add header* Authorization = Bearer .
  • Claude Code: claude mcp add --transport http moodle https:// /mcp --header "Authorization: Bearer "
  • If a client can only be given a URL, use https:// /mcp/ . Treat that URL as a password; the header is preferred because URLs end up in logs.

Security and privacy

  • Your token acts as you: anyone who can call your endpoint can read what your token can read. Keep MOODLE_TOKEN and MCP_AUTH_SECRET in environment variables or Cloudflare secrets, never in the repo.
  • The server is read-only by design and has no write tools.
  • Whatever the tools return (grades, messages, names) is sent to Claude as part of your conversation. Check your institution's rules on sharing academic data with third-party services before using this, especially if you have access to other people's data (for example as a teacher).
  • See SECURITY.md to report a vulnerability.

Known limitations

  • Tested mainly against Moodle 4.5 with a student account. Teacher/admin roles and other versions or plugins are untested; reports and fixtures are welcome.
  • Sites can disable individual web service functions, so some tools may not work everywhere.
  • Large result sets are trimmed (for example, 25 assignments by default) to save context.

Development

npm ci

npm test # unit tests with fixtures (no Moodle needed) npm run typecheck npm run dev # HTTP server on :3000 (needs .env) npm run dev:worker # Cloudflare Worker locally (needs .dev.vars)

See [CONTRIBUTING.md](CONTRIBUTING.md). Changes are listed in [CHANGELOG.md](CHANGELOG.md).

License

MIT

ถาม PopNx