mcpField
M
moodle-mcp

moodle-mcp

ローカル
github.com/av-leschinskiy科学・教育01 日前に更新

moodle-mcp について

moodle-mcpは、Moodleの課題や提出物を確認する教師向けのMCPサーバーです。ファイルのダウンロードに対応し、成績やフィードバックの保存は教師の確認後に行います。

主な機能

  1. 01コースと課題の表示
  2. 02提出状況と内容の確認
  3. 03提出ファイルのダウンロード
  4. 04確認後の成績とフィードバックの保存
  5. 05確認後の提出物の修正差し戻し
  6. 06HTMLの除去と参加者メールの非表示

活用シーン

  1. 01教師の確認が必要な提出物の特定
  2. 02コース内の学生の課題確認
  3. 03課題確認用ファイルのダウンロード
  4. 04承認後の採点とフィードバック

MCP 対応

Moodle WebサービスREST APIを介し、stdio MCPクライアントにコース、課題、提出物、ファイル、採点のツールを提供します。学生に見える採点や提出物の変更には確認が必要です。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"av-leschinskiy-moodle": {
"command": "npx",
"args": [
"-y",
"@av-leschinskiy/moodle-mcp"
],
"env": {
"MOODLE_URL": "<MOODLE_URL>",
"MOODLE_TOKEN_FILE": "<MOODLE_TOKEN_FILE>",
"MOODLE_TOKEN": "<MOODLE_TOKEN>",
"MOODLE_TIMEOUT": "<MOODLE_TIMEOUT>",
"MOODLE_CHROME": "<MOODLE_CHROME>",
"MOODLE_DEBUG": "<MOODLE_DEBUG>"
}
}
}
}
起動コマンドnpx -y @av-leschinskiy/moodle-mcp
設定が必要な環境変数
MOODLE_URLMoodle site address (wwwroot), e.g. https://moodle.example.org
MOODLE_TOKEN_FILEシークレットWhere moodle-mcp-login saves the token (path is resolved via homedir())
MOODLE_TOKENシークレットWeb service token override (CI / smoke tests)
MOODLE_TIMEOUTTimeout of a single API request (ms)
MOODLE_CHROMEChrome/Chromium binary for moodle-mcp-login (looked up in PATH by default)
MOODLE_DEBUG1/true/yes/on enables debug output to stderr and debug level in the host log channel

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@av-leschinskiy/moodle-mcp0.2.0

ツール

9

掲載時のツール一覧 · 今日に更新

このツールにパラメーターはありません。

詳細

Moodle MCP Server

Moodle Webサービス REST APIを利用する、AIアシスタント(Claude Code、Cursor、Codexなどのstdioクライアント)向けMCPサーバーです。教師向けに作られており、アシスタントはコース、課題、学生の提出物を確認し、提出ファイルをダウンロードして、教師として採点とフィードバックを保存できます。これらの操作は、教師が確認した後にのみ実行されます。学生向けのMoodle MCPサーバーとは異なり、課題の確認と採点に重点を置いています。

このサーバーは、モバイルWebサービス(moodle_mobile_app)が有効なあらゆるMoodleサイトで動作します。トークンはMoodleモバイルアプリと同じ方法で発行されるため、キャプチャ認証がある外部OAuthプロバイダー経由のログインにも対応しています。

前提条件

  • Node.js ≥ 22。
  • moodle-mcp-loginコマンドを実行するためのGoogle ChromeまたはChromium。
  • Moodleサイトでモバイルアプリへのアクセスが有効になっていること(サイト管理 → モバイルアプリ)。 確認するには、<site>/admin/tool/mobile/launch.phpがエラーを返さずに開くことを確認してください。

クイックスタート

以下の例ではhttps://moodle.example.orgを使用しています。ブラウザーに表示されるMoodleのアドレス(スキーム、ホスト、パス)に置き換えてください。末尾のスラッシュの有無は問いません。

  1. マシンごとに一度ログインします。また、ツールからログインエラーが返された場合は、その都度ログインしてください (Moodleのログインとサーバートークン、ロシア語):

    MOODLE_URL=https://moodle.example.org npx -y -p @av-leschinskiy/moodle-mcp moodle-mcp-login
    

    Chromeウィンドウが開きます。通常どおりサイトにログインし、キャプチャ認証をご自身で完了してください。コマンドはLogged in as <name> on <site>を表示して、ウィンドウを閉じます。-pを指定しない場合、npxはログインコマンドではなくサーバーを起動します。ChromeはPATHから検索されます。macOSとWindowsでは、MOODLE_CHROMEにパスを設定してください。

  2. クライアントにサーバーを追加します。Claude Codeの場合:

    claude mcp add moodle -e MOODLE_URL=https://moodle.example.org -- npx -y @av-leschinskiy/moodle-mcp
    

    すべてのプロジェクトで有効にするには、-s userを追加します。指定しない場合は、現在のプロジェクトでのみ有効になります。

    Codexの場合。コマンドを使うか、~/.codex/config.tomlに以下のブロックを追加します。

    codex mcp add moodle --env MOODLE_URL=https://moodle.example.org -- npx -y @av-leschinskiy/moodle-mcp
    
    [mcp_servers.moodle]
    command = "npx"
    args = ["-y", "@av-leschinskiy/moodle-mcp"]
    env = { MOODLE_URL = "https://moodle.example.org" }
    

    Cursorなどのクライアントの場合、コマンドにnpx -y @av-leschinskiy/moodle-mcpを指定し、MOODLE_URL変数を設定するstdioサーバーとして追加します。

    {
      "mcpServers": {
        "moodle": {
          "command": "npx",
          "args": ["-y", "@av-leschinskiy/moodle-mcp"],
          "env": { "MOODLE_URL": "https://moodle.example.org" }
        }
      }
    }
    
  3. 確認として、アシスタントに「自分のMoodleコースを表示して」と依頼します。

リポジトリをクローンしている場合は、npxの代わりにnode <clone>/dist/index.jsとnode <clone>/dist/cli/login.jsを使用してください。dist/はコミット済みのため、ビルドは不要です。

内容

合計10個のツールがあり、そのうち3個はユーザーの確認が必要です。

カテゴリツール確認対応内容
サイト2—自分の情報、Moodleのバージョン、利用可能な機能、自分のコース
課題と提出物4—コースの課題、参加者と提出状況、コース全体で教師の対応が必要なもの、提出物の詳細
ファイル1—提出ファイルのディスクへのダウンロード
採点33評点とフィードバック、提出物へのコメント、提出物を再提出用に差し戻す
名前の一覧

サイト

  • moodle_list_courses
  • moodle_site_info

課題と提出物

  • moodle_get_submission
  • moodle_list_assignments
  • moodle_list_pending_submissions
  • moodle_list_submissions

ファイル

  • moodle_download_file

採点

  • moodle_add_submission_comment — 確認が必要
  • moodle_revert_submission_to_draft — 確認が必要
  • moodle_save_grade — 確認が必要

サーバーはあなたに代わって操作します。Moodleのインターフェースであなたが確認・変更できるものと同じものを確認・変更します。ホストが確認を求めるのは、学生に表示される書き込み操作(フィードバック付きの評点、提出物へのコメント、提出物を下書きに戻す操作(destructiveHint: true))のみです。ファイルのダウンロードも書き込みを伴いますが、あなたのディスクにのみ保存されるため、確認は必要ありません。

モデルのコンテキストに合わせて、レスポンスは短縮されます。説明や提出物のHTMLはプレーンテキストに変換され、時刻はISO形式になり、未設定の評点はnullに変換されます。また、参加者のメールアドレスは返されません。

設定

変数必須デフォルト説明
MOODLE_URLはい—Moodle サイトのアドレス(wwwroot)、例:https://moodle.example.org
MOODLE_TOKEN_FILE—~/.config/mcp-moodle/token.jsonmoodle-mcp-login がトークンを保存する場所(パスは homedir() を使って解決されます)
MOODLE_TOKEN——Web サービストークンの上書き(CI/スモークテスト)
MOODLE_TIMEOUT—300001 回の API リクエストのタイムアウト(ms)
MOODLE_CHROME——moodle-mcp-login 用の Chrome/Chromium バイナリ(デフォルトでは PATH 内から検索されます)
MOODLE_DEBUG—false1/true/yes/on を設定すると、stderr へのデバッグ出力と、ホストのログチャネルでの debug レベルのログが有効になります

トークンファイルの権限は 0600 で、発行先のサイトアドレスが保存されています。MOODLE_URL と一致しない場合、サーバーは moodle-mcp-login の実行を求めます。サーバーはリクエストのたびにファイルを読み込むため、再ログイン後にホストを再起動する必要はありません。トークンはエラーメッセージ、ログ、ツールのレスポンス(ファイル URL を含む)から除去されます。

ログインに使用する Chrome プロファイルは、メインのプロファイルとは別に保存されます(~/.config/mcp-moodle/chrome-profile)。サイトの Cookie は保持されるため、多くの場合、パスワードを入力せずに再ログインできます。

開発

npm install        # also enables the git hooks (.githooks)
npm run dev        # tsx, no compilation
npm run build      # native TypeScript 7 → dist/
npm run verify     # typecheck + lint + tests + docs check
MOODLE_URL=… npm run smoke   # read-only tool chain against a live Moodle

npm run build のみでビルドしてください。devDependencies には 2 つのコンパイラバージョンが含まれています。詳細。dist/ はコミット済みです。pre-commit フックがビルドとステージングを行い、パッチバージョンを更新して、上記の表を再生成します。アーキテクチャとルールは AGENTS.md(ロシア語)に記載されています。

コメント

MCP は初めてですか?

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

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