mcpField
M
moodle-mcp

moodle-mcp

ローカル
github.com/G36maid科学・教育271 週間前に更新

moodle-mcp について

moodle-mcp は Moodle 3.7〜5.x を操作するエージェント向けの MCP サーバーです。型付きツールでコース資料、課題、ファイル、提出を扱い、文書変換と書き込み操作の確認にも対応します。

主な機能

  1. 01コース、予定、フォーラムの閲覧
  2. 02課題と添付ファイルの取得
  3. 03PDF と HTML の読みやすいテキストへの変換
  4. 04ファイルのアップロードと課題の提出
  5. 05実行前の書き込み操作の確認
  6. 06オプションでの Web サービス関数へのアクセス

活用シーン

  1. 01今後のコース課題の締切を確認
  2. 02課題の説明と PDF を読む
  3. 03コース資料を基に学習計画を作成
  4. 04課題の下書きをアップロードして提出

MCP 対応

Moodle の操作を型付きツールとして MCP クライアントに公開し、結果の ID を後続の呼び出しに利用できます。オプションを有効にすると、Moodle の Web サービス関数にもアクセスできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
cargomoodle-mcp0.2.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

moodle-mcp のヒーローバナー

CI Codecov リリース crates.io ライセンス:MIT Rust MCP リリース

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

Model Context Protocol サーバーです。LLM エージェントが単一の静的バイナリを通じて、実際の Moodle LMS を利用できます。コースの閲覧、課題の PDF の取得、コードの作成、アップロードや提出が可能です。

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

公式 MCP SDK(rmcp)を使って Rust で構築されています。Moodle 3.7、4.5、5.2 で実際に動作することを検証済みで、3.7 → 5.x 向けに設計されています。

✅ その理由

一般的なチャットボットは Moodle にアクセスできないため、学習作業はすべて手作業のままです。「今週の締め切りは?」に答えるためにブラウザーのタブを5つ開き、PDFを手動で再アップロードし、フォーラムや成績をページごとにコピー&ペーストする必要があります。

moodle-mcp は、エージェントをあなたのアカウントで Moodle にログインさせます。20種類の型付きツールが学生の学習全般をカバーし、エージェントはブラウザーを開くことなく、ツールを自動で連携させます。

  • 必要な機能をすべて搭載 — ドキュメント変換、HTML から Markdown への変換、認証 CLI、オプトイン方式のエスケープハッチを単一のバイナリに収録。プラグイン、補助スクリプト、別のランタイムは不要です
  • エージェント向けに設計 — ツールは base64 ではなくローカルのファイルパスを受け取り、返します。すべての結果に次の呼び出しに必要な ID が含まれ、エラーは平易な言葉で修正方法を提案します
  • デフォルトで安全 — 書き込みツールは事前に確認を求め、提出物は指示があるまで下書きのままです。クイズへの回答機能は意図的に提供していません
  • バージョンに適応 — Moodle 3.7 で検証済み、4.x/5.x 向けに設計されています。バージョン間のレスポンスの違いは自動的に吸収されます
  • 単一の静的バイナリ — ランタイム依存関係はありません

🚀 クイックスタート

モバイルアプリのウェブサービスを許可しているサイトの Moodle 3.7 → 5.x アカウントが必要です(ほとんどのサイトで許可されています。詳しくは 前提条件をご覧ください)。

# 1. Install
cargo install moodle-mcp        # or a prebuilt binary / one-click .mcpb — no Rust needed

# 2. Log in once — prints MOODLE_URL and MOODLE_TOKEN
moodle-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."

または、これをエージェントに貼り付けて、すべての手順を実行させてください(エージェントはターミナルで moodle-mcp auth を開きます。そこで学校の認証情報を入力してください)。

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

ビルド済みバイナリ、SSO ログイン、各クライアント向けの設定スニペット、環境変数の完全なリファレンス: インストール · はじめに · 設定

💬 エージェントにできること

追加の設定は不要です。エージェントはツールの説明からツールを見つけ、自ら連携して実行します。

あなたの指示エージェントが連携して実行する内容
「Information Security の HW1 を仕上げてください。課題の説明と添付 PDF を読み、問題を解き、下書きを提出してください。」get_assignment(課題の説明と添付ファイル)→ fetch_file(PDF → 数式を含む Markdown)→ 解答 → 解答ファイルを作成 → upload_file → submit_assignment → get_assignment(提出済みか確認 ✓)
「今後の締め切りとコース教材に基づいて、次の 2 週間の学習計画を作成してください。」get_schedule(すべての締め切り)→ コースごとに get_course_overview → 締め切りを考慮した日ごとの計画
「今週の Data Communication で何があったのか見逃しました。お知らせフォーラムも含めて教えてください。」get_notifications + get_forum_discussions → get_discussion_posts → 週ごとの要約を作成
「Software Engineering の小テストに備えたいです。先生は小テストについて何を投稿しましたか?」get_course_overview(小テストの項目)→ get_assignment(要件)→ 関連するフォーラムのスレッド

🔄 エージェントの仕組み

ツールは Moodle の操作方法を反映しており、各階層の出力には次の階層で使う ID が含まれています。

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"]

専用ツールで扱えない内容には、call_ws_function と list_ws_functions のエスケープハッチからアクセスできます。一般的なトークンが呼び出せる約 350 個の関数を網羅します(合計 20 + 2 = 22 個です。エスケープハッチの利用は MOODLE_ENABLE_WS_FUNCTION=true でオプトインします)。

📚 ドキュメント

詳しいドキュメントは moodle.ntnu.cc/docs にあります(mdBook。ローカルで読むには mdbook serve docs を実行してください)。

ページ内容
はじめにゼロから最初のプロンプトまで。MCP の経験は不要です
インストールビルド済みバイナリ、cargo、ソースからのインストール
設定すべての環境変数。Claude Code、Codex、OpenCode、pi の設定例
ツール22 個のツールの詳細と、ツール間での ID の流れ
セキュリティと認証トークンのライフサイクル、トランスポート、書き込み時の安全性
変更履歴バージョンごとのリリースノート
開発アーキテクチャの概要、テスト、リリースプロセス
概要moodle-mcp、MCP、Moodle について

🧰 開発

cargo test                 # unit + wiremock integration + MCP protocol tests
cargo clippy --all-targets
cargo fmt -- --check
cargo build --release

プロジェクトのドキュメントは docs/ にあります。Prettier で整形された mdBook 形式です(docs/README.md を参照)。mdbook serve docs でプレビューできます。

ランディングページは site/ にあります。Astro 7 + TypeScript を使用しています(cd site && npm install && npm run dev で実行し、npm run build でビルドできます)。

🔐 セキュリティ

HTTPS を使用してください。トークンはすべてのリクエストに含まれます。ツールの出力やエラーに表示されることはなく、同一サイトの Moodle URL にのみ挿入されます。また、書き込みツールは実行前に確認を求めます。詳しくはセキュリティと認証をご覧ください。

📄 ライセンス

MIT — LICENSE をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。