mcpField
M
Moodle MCP

Moodle MCP

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

Moodle MCP について

Moodle MCPは、自然言語でMoodleのコース情報を参照する読み取り専用サーバーです。課題、期限、成績、フォーラム、通知を確認したい学生などを対象としています。

主な機能

  1. 01コースとコース内容の一覧表示
  2. 02課題の期限と状況の確認
  3. 03成績とフィードバックの閲覧
  4. 04フォーラムの議論の閲覧
  5. 05最近の通知の取得

活用シーン

  1. 01未提出の課題と期限の確認
  2. 02提出済み課題と成績の確認
  3. 03コースのお知らせや議論の検索

MCP 対応

MCPサーバーは、Moodleのサイト、コース、課題、成績、フォーラム、通知を読み取るツールを提供します。ローカルのstdioまたはHTTPサービスとして実行できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"fabioov-moodle": {
"command": "npx",
"args": [
"-y",
"@fabioov/moodle-mcp"
],
"env": {
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"MOODLE_URL": "<MOODLE_URL>",
"MOODLE_TOKEN": "<MOODLE_TOKEN>"
}
}
}
}
起動コマンドnpx -y @fabioov/moodle-mcp
設定が必要な環境変数
MCP_TRANSPORTRun over stdio for local clients
MOODLE_URLRoot URL of your Moodle site, e.g. https://moodle.example.edu
MOODLE_TOKENシークレットYour Moodle web service token (Preferences > Security keys)

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

パッケージ
npm@fabioov/moodle-mcp0.1.1

ツール

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

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

詳細

Moodle MCP

CI License: MIT

Moodle 用のオープンソースの読み取り専用MCP サーバーです。Claude に接続して、課題、締め切り、成績、コース、フォーラム、通知について自然な言葉で質問できます。

Moodle Pty Ltd との提携や同社による推奨を受けていません。「Moodle」はその所有者の商標です。

質問できること

  • 「今月中に提出しなければならない課題はどれですか?」
  • 「今週の締め切りは何で、すでに提出したものはどれですか?」
  • 「機械学習の成績はどうなっていますか?」
  • 「コースに新しいお知らせはありますか?」
  • 「コンピューターグラフィックスのコースのセクションとアクティビティを表示してください。」

ツール

すべてのツールは読み取り専用で、簡潔で読みやすい出力を返します。

ツール内容パラメーター
get_site_infoトークンを検証します。サイト、Moodle のバージョン、現在のユーザーを表示します–
list_coursesコースを一覧表示します(デフォルトでは現在のコース)includePast?
get_course_contentsコースのセクションとアクティビティを表示します。各モジュールには id と instance がありますcourseId
list_assignments提出期限順に課題を一覧表示しますcourseId?、upcomingOnly?、limit?(25)
get_assignment_status提出・採点状況、成績、フィードバックのコメントを表示しますassignmentId
get_upcoming_deadlines今後 N 日間のカレンダーイベントと課題を表示します。各課題には submitted または pending のマークが付きますdays?(14)、onlyPending?
get_gradesコースの成績項目を表示しますcourseId
list_forum_discussionsフォーラムの最近のディスカッションを表示しますforumId(get_course_contents の instance)
get_notificationsMoodle の最近の通知を表示します–

要件

  • ウェブサービス/モバイルアプリへのアクセスが有効になっている Moodle サイト(Moodle 4.x。4.5 で開発)。
  • ご自身のウェブサービストークン(下記)。所属機関が無効にしている機能を使うツールは、エラーを返します。
  • サーバーには Node 20 以降(Wrangler でデプロイする場合は Node 22 以降)、Docker、または無料の Cloudflare アカウントが必要です。

セットアップ

1. Moodle の URL とトークンを取得する
  • URL: ページ名や /webservice を含まない Moodle のルート URL。例:https://moodle.example.edu (Moodle がサブフォルダーにある場合は、https://example.edu/moodle のように含めてください)。
  • トークン: Moodle の Preferences → Security keys にある Moodle mobile web service のキーを確認します。サイトによってはラベルしか表示されません。Reset をクリックすると新しいキーが生成されます(Moodle モバイルアプリからサインアウトされます)。または、Moodle のユーザー名とパスワード(SSO ではないもの)でログインする場合は、次のコマンドで取得してください。 curl -s "$MOODLE_URL/login/token.php" -d username=... --data-urlencode password=... -d service=moodle_mobile_app (パスワードがシェルの履歴に残らないよう、対話形式で入力してください)。
2. 設定する

.env.example を .env にコピーし、MOODLE_URL、MOODLE_TOKEN、MCP_AUTH_SECRET を入力します(後者は openssl rand -hex 24 で生成してください)。.env は Git の追跡対象外です。

3. 実行する(いずれかを選択)

Cloudflare Workers(無料、常時稼働、ドメイン不要): 推奨

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.<you>.workers.dev

Cloudflare の現在の無料プランの制限を確認してください。まずは .env の値を Git の追跡対象外の .dev.vars にコピーし、npm run dev:worker を実行してローカルで試してください。

Docker/Node(セルフホスト)

docker build -t moodle-mcp . && docker run --env-file .env -p 3000:3000 moodle-mcp
# or: npm ci && npm run build && npm start

その後、HTTPS 経由で公開してください(Cloudflare Tunnel や Tailscale Funnel など)。

ローカルのみ(Claude Desktop/Claude Code、stdio): インストールは不要です。

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

このモードでは MCP_AUTH_SECRET は不要です。

4. Claude に追加する
  • Claude.ai: Settings → Connectors → Add custom connector。URL https://<your-host>/mcp を入力し、 No sign-in を選択してから、Add header で Authorization = Bearer <MCP_AUTH_SECRET> を設定します。
  • Claude Code: claude mcp add --transport http moodle https://<your-host>/mcp --header "Authorization: Bearer <MCP_AUTH_SECRET>"
  • クライアントに URL しか指定できない場合は、https://<your-host>/mcp/<MCP_AUTH_SECRET> を使用します。この URL は パスワードと同様に扱ってください。URL はログに残るため、ヘッダーを使用することを推奨します。

セキュリティとプライバシー

  • トークンはあなた本人として機能します。エンドポイントを呼び出せる人は誰でも、トークンで読み取り可能なデータを読めます。 MOODLE_TOKEN と MCP_AUTH_SECRET は環境変数または Cloudflare のシークレットに保存し、リポジトリには絶対に保存しないでください。
  • このサーバーは設計上読み取り専用であり、書き込みツールはありません。
  • ツールが返す情報(成績、メッセージ、氏名)は、会話の一部として Claude に送信されます。使用前に、学術データをサードパーティサービスと共有することについて、 所属機関の規則を確認してください。特に、教師などとして他の人のデータにアクセスできる場合は注意してください。
  • 脆弱性の報告については、SECURITY.md を参照してください。

既知の制限

  • 主に学生アカウントで Moodle 4.5 を対象にテストしています。教師/管理者のロール、その他のバージョンやプラグインは テストされていません。報告やテスト用データの提供を歓迎します。
  • サイトによっては個々のウェブサービス機能が無効化されているため、一部のツールが動作しない場合があります。
  • コンテキストを節約するため、大量の結果は切り詰められます(例:課題はデフォルトで 25 件)。

開発

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)

CONTRIBUTING.md を参照してください。変更内容は CHANGELOG.md に記載されています。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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