moodle-ai-mcp
moodle-ai-mcp
Moodle向けAIネイティブMCPコントロールプレーン。
MCPクライアント(Claude Code、ChatGPT、Cursor、その他Model Context Protocolを話す任意のクライアント)がこのサーバーに接続し、実際のMoodleサイトに関する構造化された正確な回答を得ます。すなわち、サイトが何であるか、接続が誰として認証されているか、その接続に何が許可されているか、Moodleの外部関数のうちどれに到達できるか、そして——RESTラッパー以上の価値を生む部分——サイトにインストールされているH5Pライブラリが正確にどれで、そのコンテンツスキーマが何であるか、です。
これはMoodle RESTの薄いラッパーではありません。長期的な目標は、AIクライアントがコース全体を安全に設計・構築するために使用できるコントロールプレーンです。このリポジトリには現在、その最初の基盤が含まれています。
現在の成熟度: 基盤マイルストーン、読み取り専用
現在動作しているもの:
公式MCP TypeScript SDK上に構築された、7つの厳選ツールを備えたstdio上のMCPサーバー
7つの読み取り専用外部関数、実際のケイパビリティ強制、PHPUnitカバレッジを備えたMoodle 5.2ローカルプラグイン(
local_aimcp)ケイパビリティを認識するコース読み取りモデル: セクション、アクティビティ、完了設定、成績設定。
hiddenフラグが付いたすべてではなく、認証されたアイデンティティが実際に閲覧できるものを反映認証されたサービスが到達できる外部関数の動的発見と、ロスレスのシグネチャイントロスペクション
インストール済みH5Pライブラリとその実際のインストール済みセマンティクスの動的発見。JSON Schemaが表現できないすべてのものに明示的な注記を付けてJSON Schemaに変換
意図的に構築していないもの: 書き込み操作、コース/アクティビティ/H5P作成、Course Blueprintエンジン、ブラウザ自動化、ファイル転送、ホスティングインフラストラクチャ。下記の「制限事項」を参照してください。
Related MCP server: Drupal Bridge MCP
アーキテクチャ
AI client --MCP/stdio--> apps/mcp-server (TypeScript, MIT)
|
| authenticated Moodle web service call
v
moodle/local/aimcp (Moodle plugin, GPL-3.0-or-later)
|
v
Moodle 5.2 core + H5P coreサーバーはプロトコル、ツールサーフェス、オーケストレーション、スキーマ変換を所有します。プラグインはMoodleだけが答えられるすべてを所有します: アイデンティティ、コンテキスト、ケイパビリティ、外部関数レジストリ、H5Pエンジン。MoodleのロジックがTypeScriptで再実装されることは決してなく、オーケストレーションがPHPに漏れることもありません。
ツールサーフェスが数百ではなく6つのツールである理由を含む詳細は、docs/ARCHITECTURE.mdにあります。
前提条件
Node.js 24
moodle-dockerのMoodle 5.2スタックを備えたDocker
有効な外部サービスで認可されたユーザーのMoodleウェブサービストークン
ローカル開発
完全な手順: docs/LOCAL-DEV.md。短いバージョン:
cd ~/DEV/moodle-ai/moodle-ai-mcp
# 1. Start the Moodle stack (installs the persistence override, mounts the plugin)
./scripts/stack.sh start
# 2. Register the plugin with Moodle
docker exec -u www-data -w /var/www/html moodle-ai-webserver-1 \
php admin/cli/upgrade.php --non-interactive
# 3. Attach the plugin's functions to your external service (idempotent)
docker exec -u www-data -w /var/www/html moodle-ai-webserver-1 \
php public/local/aimcp/cli/provision_service.php --service=moodle_ai_mcp_dev
# 4. Build and run the server
npm install
npm run build
./scripts/run-server.shデータベース、moodledata、インストール済みH5Pライブラリは名前付きDockerボリュームに格納されるため、./scripts/stack.sh recreateは安全です。データを破壊するのは./scripts/stack.sh resetだけで、しかも確認を求めます。いつでも./scripts/backup.shでバックアップできます。
認証情報は.env.localから取得されます。これはこのリポジトリの外部にあるファイルへのシンボリックリンクです。.env*はgitignoreされています。docs/SECURITY.mdを参照してください。
MCPクライアントの接続
claude mcp add moodle-ai --scope local -- \
/absolute/path/to/moodle-ai-mcp/scripts/run-server.shまたはInspectorを使用:
npx @modelcontextprotocol/inspector ./scripts/run-server.shツール
ツール | 回答する内容 |
| これはどのMoodleか、誰として接続しているか、そのアイデンティティは何ができるか、どのプラグインとH5Pが利用可能か。 |
| どのコースが存在し、このアイデンティティに表示されるか。オプションで検索可能。 |
| 1つのコースの構造: 順序どおりのセクション、コースページ順のアクティビティ、完了設定、成績項目設定。呼び出し元が閲覧できないものを省略し、コース管理フィールド(生の利用可能ルール、モジュールID番号)をMoodle自身のエディターケイパビリティの背後にゲートし、どれだけ保留したかを示す。 |
| この接続が到達できるMoodleの外部関数のうちどれか。関連性でランク付け。組み込みリストではなく、ライブで発見。 |
| 1つの関数の完全なシグネチャ: Moodle自身のパラメータと戻り値のツリーに加え、生成されたJSON Schemaと変換ノート。 |
| どのH5Pライブラリがインストールされているか、正確なバージョン、どれが実行可能なコンテンツタイプか、どれが依存関係のみか、Moodleが現在オーサリング用に提供しているものはどれか。 |
| 1つのH5Pライブラリバージョンのインストール済みセマンティクスに加え、生成されたJSON Schemaと、H5Pが表現するがJSON Schemaでは表現できないすべてのものに関するノート。 |
すべてのツールはreadOnlyHint: true、destructiveHint: falseで注釈され、structuredContentとJSONテキストのフォールバックの両方を返します。
「任意のMoodle関数を呼び出す」汎用ツールは意図的にありません。検索と説明によってロングテールを発見可能にします。任意の関数の実行には、まだ存在しない安全性の分類が必要です。
テスト
npm --prefix apps/mcp-server run typecheck # TypeScript, strict
npm --prefix apps/mcp-server run test:unit # pure logic, no Moodle needed
npm --prefix apps/mcp-server run build
npm --prefix apps/mcp-server run test:integration # real Moodle + real MCP session
./scripts/lint-plugin.sh # php -l over the plugin
./scripts/check-plugin.sh # Moodle coding standard (moodle-cs)
./scripts/test-plugin.sh # PHPUnit inside the Moodle container統合スイートはモックではありません。ビルド済みサーバーを子プロセスとして起動し、公式SDKクライアントでMCPを話し、ライブサイトに対してアサートします——アイデンティティが期待どおりのMoodleユーザーであること、トークンがどの出力にも現れないことを含みます。
制限事項
MCP上では読み取り専用。 作成、更新、削除、登録、採点、アップロード、ダウンロードはありません。リポジトリ内でMoodleに書き込む唯一のものは開発フィクスチャCLIであり、これはMCPクライアントやウェブサービスからは到達できません(docs/SECURITY.mdを参照)。
任意の関数実行は不可。 検索と説明のみ。
stdioのみ。 HTTPトランスポートは将来の追加予定。ドメイン層はすでにトランスポート非依存。
Course Blueprintなし、diff/applyエンジンなし、コンテンツ生成なし。
ブラウザ自動化なし、スクリーンショットなし、アクセシビリティ監査なし。
moodle_course_inspectはコースの構造を返します。学習者のパフォーマンスではありません。成績もユーザーごとの完了状態もありません。Moodleのフロントページはコース行ですが教育用コースではないため、
moodle_course_inspectはそれを拒否します。moodle_course_listは依然としてそれを報告し、isSiteCourseフラグを付けます。H5Pスキーマ生成は1レベル深さまで: ネストされた
libraryフィールドはラッパーの形状と許可されたライブラリバージョンを固定しますが、そのparamsはそのライブラリ自身のセマンティクスに従います——2回目のmoodle_h5p_schema呼び出しで取得してください。JSON Schemaで表現できないH5PおよびMoodleの構造がいくつかあります(
showWhen条件、HTMLタグホワイトリスト、PCREパターン、PARAMクリーニングルール)。これらはx-h5p-*/x-moodle-*注釈として保持され、破棄されるのではなく変換ノートとして報告されます。Moodle RESTは空の配列や真の
nullを表現できません。クライアントは両方を明示的な警告として報告します。プラグインはこのリポジトリからコンテナにバインドマウントされます。rsyncコピーはフォールバックとしてのみ保持されます。ホストのシンボリックリンクは機能しません。理由はdocs/LOCAL-DEV.mdで説明されています。
ライセンス
apps/mcp-server/— MITmoodle/local/aimcp/— GPL-3.0-or-later(必須: Moodleプラグインのため)
GPL実装コードはMITサーバーにコピーされていません。参照プロジェクトはアーキテクチャ参照として研究され、クリーンルームで再実装されました。プロジェクトごとの論拠はdocs/REFERENCE-ARCHITECTURE.mdにあります。
ドキュメント
docs/ARCHITECTURE.md — 設計と境界
docs/REFERENCE-ARCHITECTURE.md — 再利用マトリックスとライセンス
docs/LOCAL-DEV.md — 再現可能なローカルセットアップ
docs/SECURITY.md — シークレット処理、認可、サーフェス制約
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
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with Moodle via web services, allowing tasks like listing courses, assignments, events, and downloading files.104MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Drupal sites through MCP tools, with automatic discovery, OAuth-based authentication, and scope validation.305MIT
- AlicenseNot gradedqualityCmaintenanceConnects Moodle LMS with AI assistants through the Model Context Protocol, enabling users to interact with Moodle data via a conversational chatbot interface.11MIT
- AlicenseAqualityCmaintenanceProvides read-only access to Gemini 3 Online's knowledge surface (models, pricing, links, FAQ) for MCP-compatible AI clients, requiring no API keys.3MIT
Related MCP Connectors
Generate 18 AI readiness files (llms.txt, ai.txt, RAG indexes, schema) for any website.
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
MCP server for AI access to Swagger by SmartBear.
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/neongodio/moodle-ai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server