Skip to main content
Glama

moodle-mcp

Moodle LMS 向け Model Context Protocol サーバー — Hermes、Claude Code、OpenCode を Moodle に接続。課題、成績、締切を取得し、Obsidian に同期、WhatsApp アラートを送信。

Python MCP License: MIT

概要機能クイックスタート設定エージェント設定ツールObsidian 同期


概要

moodle-mcp は Moodle Web Services API と Model Context Protocol を橋渡しし、AI エージェントがあなたのアカデミックアシスタントとして機能できるようにします。Polibatam(複数クラスフィルタリング)向けに構築されましたが、Web Services が有効な任意の Moodle インスタンスで動作します。

loyaniu/moodle-mcp のフォーク — 22 ツールから 40 ツールに拡張され、Obsidian 同期、教材ダウンロード、提出ツール、カレンダー統合、同時フェッチ、学期自動アーカイブを追加。

[!TIP] 任意の Moodle LMS で動作 — MOODLE_URL をあなたのインスタンスに指定するだけ。Polibatam のクラスフィルター(MOODLE_MY_CLASS)はオプションです。


Related MCP server: mcp-moodle

機能

  • 課題と締切 — クラススロットでフィルタリング、緊急度順にソート、実行可能なタスクリスト付き

  • 成績と進捗 — コース健全性チェック、学習負荷、完了状況追跡

  • コースコンテンツと検索 — セクション、モジュール、教材、お知らせ、最近のアクティビティ

  • Obsidian 同期 — ダッシュボード、締切、コースノートをワンコマンドでエクスポート(学期自動アーカイブ付き)

  • 教材ダウンロード — コースファイルと課題添付ファイルの一覧表示とダウンロード

  • 提出 — テキスト提出、ステータス確認、フィードバックの読み取り

  • カレンダー — 今後のイベント、リマインダー作成(H-2)、アクティビティ完了マーク

  • エージェント対応 — Hermes、Claude Code、OpenCode 向けの単一 install-mcp.sh


クイックスタート

ワンラインインストール

curl -fsSL https://raw.githubusercontent.com/zuckdorsey/moodle-mcp/main/scripts/install-mcp.sh | bash

インストール済みのエージェントを自動検出し、それぞれを設定します。ドライランを実行する場合:

bash scripts/install-mcp.sh --dry-run

確認

# Hermes (profile: akademik)
hermes --profile akademik mcp test moodle
# → ✓ Connected  ✓ Tools discovered: 40

# Claude Code
claude mcp list

# Run tests
PYTHONPATH=src .venv/bin/python -m unittest discover -s tests -v

[!NOTE] 開発時は PyPI よりもローカルソースを優先 — ランチャーは自動的に PYTHONPATHsrc/ に設定します。


設定

1. Moodle トークンを取得

  1. https://<your-moodle>/user/managetoken.php を開く

  2. サービス 列で Moodle mobile web service の行を見つける

  3. トークンをコピー

2. .env を作成

cp .env.example .env
MOODLE_URL=https://your-moodle.example.com/webservice/rest/server.php
MOODLE_TOKEN=your_token_here

# Optional — Polibatam class-slot filter (e.g. Pagi C, Siang A)
MOODLE_MY_CLASS=Pagi C

# Optional — custom vault path
OBSIDIAN_VAULT_PATH=/home/you/Obsidian Vault

変数

必須

説明

MOODLE_URL

はい

Moodle REST エンドポイント(.../webservice/rest/server.php

MOODLE_TOKEN

はい

モバイル Web サービストークン

MOODLE_MY_CLASS

いいえ

複数クラスの課題タイトル用の正規表現フィルター

OBSIDIAN_VAULT_PATH

いいえ

Vault ルート(デフォルト: ~/Obsidian Vault

3. パッケージをインストール

# with uv (recommended)
uv pip install -e .

# or pip
pip install -e .

[!WARNING] .env は絶対にコミットしないでください — 完全な API アクセス権を持つトークンが含まれています。.gitignore に既に追加されています。


エージェント設定

お好みのエージェントを選択 — すべて同じローカルランチャー scripts/moodle_mcp_local_launch.py を使用します。

Hermes Agent(推奨)

bash scripts/install-mcp.sh --agent hermes --profile akademik

手動(~/.hermes/profiles/akademik/config.yaml):

mcp_servers:
  moodle:
    command: /home/you/Programming/Python/moodle-mcp/.venv/bin/python
    args: [/home/you/Programming/Python/moodle-mcp/scripts/moodle_mcp_local_launch.py]
    env:
      MOODLE_URL: ${MOODLE_URL}
      MOODLE_TOKEN: ${MOODLE_TOKEN}
      MOODLE_MY_CLASS: "Pagi C"
      OBSIDIAN_VAULT_PATH: "/home/you/Obsidian Vault"

Claude Code

bash scripts/install-mcp.sh --agent claude-code
# or manually
claude mcp add -s user moodle-mcp -- python3 /path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py

グローバル JSON(~/.claude/settings.json):

{
  "mcpServers": {
    "moodle-mcp": {
      "command": "python3",
      "args": ["/path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py"],
      "env": {
        "MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
        "MOODLE_TOKEN": "your_token_here"
      }
    }
  }
}

OpenCode

bash scripts/install-mcp.sh --agent opencode

~/.config/opencode/config.json

{
  "mcp": {
    "moodle-mcp": {
      "command": "python3",
      "args": ["/path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py"],
      "environment": {
        "MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
        "MOODLE_TOKEN": "your_token_here"
      }
    }
  }
}

Claude Desktop / Cursor

claude_desktop_config.json に追加:

{
  "mcpServers": {
    "moodle-mcp": {
      "command": "uvx",
      "args": ["moodle-mcp"],
      "env": {
        "MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
        "MOODLE_TOKEN": "your_token_here"
      }
    }
  }
}

デスクトップアプリを再起動 — ツールがピッカーに表示されます。


ツール

7 グループにわたる 40 のツール。接続された任意のエージェントから名前で呼び出せます(例:「Moodle のコース一覧を表示」→ get_my_courses)。

ツール

説明

get_my_courses

登録済みコース

get_course_content

コースのセクションとモジュール

search_course_materials

全教材を横断検索

get_course_announcements

ニュースフォーラムのお知らせ

get_recent_activity

指定タイムスタンプ以降のアクティビティ

get_course_updates

新しい教材・お知らせ

ツール

説明

get_assignments

課題(クラススロットでフィルタリング)

get_assignment_status

提出と採点状況

get_upcoming_deadlines

期限日順にソートされた締切

get_overdue_assignments

期限切れで未提出のもの

get_actionable_tasks

優先順位付けされた緊急度リスト

analyze_assignment

ステータス+要件+教材

extract_assignment_requirements

成果物と評価基準

find_relevant_materials

課題に関連するコンテンツ

decompose_task

クリティカルパス付きサブタスク

create_implementation_plan

タイムライン、リソース、マイルストーン

submit_assignment_text

テキスト回答を提出

get_assignment_feedback

フィードバックとルーブリック結果

ツール

説明

get_grades

概要またはコース別詳細

get_course_progress

完了進捗

get_course_health

健全性チェック(進捗+成績+期限超過)

get_study_load

週ごとの課題分布

get_submission_status_detail

詳細な提出状況とフィードバック

ツール

説明

get_upcoming_events

今後の Moodle イベント

create_calendar_event

H-2 リマインダーを作成

get_activity_completion

完了状況

mark_activity_complete

アクティビティを完了に

ツール

説明

semester_dashboard

コース+締切+成績

daily_briefing

期限超過、本日、最近の成績

weekly_review

提出済み、採点済み、期限超過、進捗

ask_moodle

自然言語ルーティング

get_course_updates

コース変更の検出

ツール

説明

sync_moodle_to_obsidian

完全な Vault 同期(学期切り替え時に自動アーカイブ)

export_deadlines_to_obsidian

締切のみ

export_course_outline

コース概要をノートとして

list_course_material_files

ダウンロード可能なファイルを一覧表示

download_course_materials

Materials/ にダウンロード

download_assignment_attachments

課題ファイルをダウンロード

[!TIP] 試してみて:「今週の締切は?」→ get_upcoming_deadlines、「tugas basis data を分析」→ analyze_assignment、「Obsidian に同期」→ sync_moodle_to_obsidian


Obsidian 同期

同期により、Vault 内の Academic/Moodle 以下にノートを作成します:

Obsidian Vault/Academic/
  Moodle/                    ← current semester (always up-to-date)
    .semester_courses.json   ← hidden state (course IDs)
    Dashboard.md
    Deadlines.md
    Grades.md
    Courses/
  Archive/
    Semester-2026-07/        ← auto-created on rollover
      Dashboard.md
      Courses/
      Archive-README.md

学期自動アーカイブは、コース ID の 50% 以上が変更された場合(またはすべてが新しい場合)にトリガーされます。単一コースの入れ替えは無視されます。

PYTHONPATH=src python - <<'PY'
from moodle_mcp import api
print(api.sync_moodle_to_obsidian())
PY

セキュリティに関する注意

[!CAUTION] Moodle トークンは、あなたのユーザーとして完全な API アクセスを許可します。パスワードと同様に扱ってください。

  • トークンはサーバー側で読み込まれ、モデルに送信されることはありません。

  • CI では MOODLE_URL / MOODLE_TOKEN を環境シークレットとして注入してください。

  • moodle.py は Cloudflare 互換性のためにブラウザ風の User-Agent + POST を使用しています。


謝辞

loyaniu/moodle-mcp のフォーク — すべてのオリジナルコントリビューターに感謝します:

コントリビューター

役割

Zhonglin Niu

原作者、Moodle REST 統合、コアサーバー

Vitalii Liudvynskyi

ダッシュボード、学習負荷、健全性チェック

Daniel Sticker

コースコンテンツと検索の修正

Lawrence Sinclair

セキュリティ評価バッジ

このフォークでの追加機能

  • Obsidian 同期 + 学期自動アーカイブ

  • 教材ダウンロードと課題添付ファイル

  • 提出・フィードバックツール、カレンダーと完了

  • Polibatam クラススロットフィルター(MOODLE_MY_CLASS

  • 同時フェッチ(アクション可能タスクが約 10 倍高速化)

  • Hermes / Claude Code / OpenCode 向けユニバーサル install-mcp.sh

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zuckdorsey/moodle-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server