moodle-mcp
moodle-mcp
Moodle LMS 向け Model Context Protocol サーバー — Hermes、Claude Code、OpenCode を Moodle に接続。課題、成績、締切を取得し、Obsidian に同期、WhatsApp アラートを送信。
概要 • 機能 • クイックスタート • 設定 • エージェント設定 • ツール • 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 よりもローカルソースを優先 — ランチャーは自動的に
PYTHONPATHをsrc/に設定します。
設定
1. Moodle トークンを取得
https://<your-moodle>/user/managetoken.phpを開くサービス列で Moodle mobile web service の行を見つけるトークンをコピー
2. .env を作成
cp .env.example .envMOODLE_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 REST エンドポイント( |
| はい | モバイル Web サービストークン |
| いいえ | 複数クラスの課題タイトル用の正規表現フィルター |
| いいえ | 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)。
ツール | 説明 |
| 登録済みコース |
| コースのセクションとモジュール |
| 全教材を横断検索 |
| ニュースフォーラムのお知らせ |
| 指定タイムスタンプ以降のアクティビティ |
| 新しい教材・お知らせ |
ツール | 説明 |
| 課題(クラススロットでフィルタリング) |
| 提出と採点状況 |
| 期限日順にソートされた締切 |
| 期限切れで未提出のもの |
| 優先順位付けされた緊急度リスト |
| ステータス+要件+教材 |
| 成果物と評価基準 |
| 課題に関連するコンテンツ |
| クリティカルパス付きサブタスク |
| タイムライン、リソース、マイルストーン |
| テキスト回答を提出 |
| フィードバックとルーブリック結果 |
ツール | 説明 |
| 概要またはコース別詳細 |
| 完了進捗 |
| 健全性チェック(進捗+成績+期限超過) |
| 週ごとの課題分布 |
| 詳細な提出状況とフィードバック |
ツール | 説明 |
| 今後の Moodle イベント |
| H-2 リマインダーを作成 |
| 完了状況 |
| アクティビティを完了に |
ツール | 説明 |
| コース+締切+成績 |
| 期限超過、本日、最近の成績 |
| 提出済み、採点済み、期限超過、進捗 |
| 自然言語ルーティング |
| コース変更の検出 |
ツール | 説明 |
| 完全な Vault 同期(学期切り替え時に自動アーカイブ) |
| 締切のみ |
| コース概要をノートとして |
| ダウンロード可能なファイルを一覧表示 |
|
|
| 課題ファイルをダウンロード |
[!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 のフォーク — すべてのオリジナルコントリビューターに感謝します:
コントリビューター | 役割 |
原作者、Moodle REST 統合、コアサーバー | |
ダッシュボード、学習負荷、健全性チェック | |
コースコンテンツと検索の修正 | |
セキュリティ評価バッジ |
このフォークでの追加機能
Obsidian 同期 + 学期自動アーカイブ
教材ダウンロードと課題添付ファイル
提出・フィードバックツール、カレンダーと完了
Polibatam クラススロットフィルター(
MOODLE_MY_CLASS)同時フェッチ(アクション可能タスクが約 10 倍高速化)
Hermes / Claude Code / OpenCode 向けユニバーサル
install-mcp.sh
This server cannot be installed
Maintenance
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
- Alicense-qualityCmaintenanceProvides Claude with full access to Moodle learning management systems, enabling interaction with courses, files, assignments, grades, and calendar events. It also supports building Obsidian study vaults from course materials through automated knowledge graph creation.1416MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with Moodle via web services, allowing tasks like listing courses, assignments, events, and downloading files.104MIT
- Alicense-qualityDmaintenanceEnables AI agents to interact with Moodle LMS via the Moodle REST API, supporting management of courses, users, enrollments, grades, and content.GPL 3.0
- Flicense-qualityCmaintenanceEnables AI assistants to automatically pull Canvas LMS course materials into Obsidian, syncing files, assignments, grades, and announcements organized by course and module.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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