ShinonomeLabo/moodle-mcp
If you are the rightful owner of moodle-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Moodle MCP Server is a Node.js-based server designed to facilitate communication with Moodle's Web Service API, enabling access and manipulation of various Moodle data endpoints.
get_site_info
Retrieve basic information about the Moodle site.
get_users
Search for users and retrieve their information.
get_courses
Retrieve a list of courses.
get_user_courses
Retrieve a list of courses for a specific user.
get_course_contents
Retrieve course contents and modules.
Moodle MCP Server
Model Context Protocol (MCP) server for Moodle Web Service API integration.
概要
このプロジェクトは、Moodleの Web Service API と通信するためのMCPサーバーをNode.jsで実装したものです。MoodleのさまざまなAPIエンドポイントにアクセスし、コース情報、ユーザー情報、アサインメント、Analytics API等のデータを取得・操作できます。
機能
コア機能
- 🎓 コース管理: コース一覧、コンテンツ、ユーザー登録状況の取得
- 👥 ユーザー管理: ユーザー検索、作成、更新、削除
- 📝 アサインメント: 課題の一覧取得
- 🏢 サイト情報: Moodleサイトの基本情報取得
- 🔧 汎用API呼び出し: 任意のMoodle Web Service関数の直接呼び出し
拡張機能
- 📊 成績管理: 成績の取得、レポート生成
- 💬 フォーラム: フォーラムとディスカッションの管理
- 📧 メッセージング: メッセージの送受信、通知管理
- 📁 ファイル管理: ファイルのアップロード、取得
- 📈 Analytics API: 予測モデル、インサイト、機械学習の統合
- 🎯 小テスト: クイズの管理、試行の追跡
- 📚 SCORM: SCORMパッケージの管理とトラッキング
- 👥 コホート: ユーザーグループの管理
- 🏷️ タグシステム: タグの管理と検索
- 📝 ブログ: ブログエントリの管理
- 🔐 ロール管理: ロールの割り当てと権限管理
Analytics API機能 (Moodle Analytics API対応)
- 予測モデルの管理(作成、トレーニング、評価)
- インサイトの取得と管理
- インジケーターとターゲットの設定
- 時間分割方法の管理
- モデルの統計情報とレポート
必要条件
- Node.js 18以上、またはDocker
- MoodleサイトでWeb Servicesが有効になっていること
- 有効なWeb Service Token
インストール
Option 1: Docker を使用(推奨)
Docker Hubから実行
# Docker Hubから最新版をプル
docker pull shinonomelaboratory/moodle-mcp:latest
# 環境変数を設定して実行
docker run -it --rm \
-e MOODLE_SITE_URL=https://your-moodle-site.com \
-e MOODLE_WS_TOKEN=your-webservice-token \
shinonomelaboratory/moodle-mcp:latest
Docker Composeを使用
# リポジトリをクローン
git clone https://github.com/yourusername/moodle-mcp.git
cd moodle-mcp
# 環境変数を設定
cp env.example .env
# .envファイルを編集
# Docker Composeで起動
docker-compose up -d
Option 2: ローカル環境でのインストール
# リポジトリをクローン
git clone https://github.com/yourusername/moodle-mcp.git
cd moodle-mcp
# 依存関係をインストール
npm install
# ビルド
npm run build
設定
env.example
を.env
にコピーします:
cp env.example .env
.env
ファイルを編集し、Moodleの設定を入力します:
MOODLE_SITE_URL=https://your-moodle-site.com
MOODLE_WS_TOKEN=your-webservice-token
使用方法
Docker環境
# Docker Composeで起動
docker-compose up -d
# ログを確認
docker-compose logs -f moodle-mcp
# 停止
docker-compose down
ローカル環境
開発モード
npm run dev
プロダクションモード
npm run build
npm start
MCPクライアントからの接続
Docker環境の場合
{
"mcpServers": {
"moodle": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "MOODLE_SITE_URL=https://your-moodle-site.com",
"-e", "MOODLE_WS_TOKEN=your-token",
"shinonomelaboratory/moodle-mcp:latest"
]
}
}
}
ローカル環境の場合
{
"mcpServers": {
"moodle": {
"command": "node",
"args": ["/path/to/moodle-mcp/dist/index.js"],
"env": {
"MOODLE_SITE_URL": "https://your-moodle-site.com",
"MOODLE_WS_TOKEN": "your-token"
}
}
}
}
利用可能なツール
基本ツール
get_site_info
Moodleサイトの基本情報を取得します。
get_users
ユーザーを検索して情報を取得します。
searchKey
: 検索キー (username, email, firstname, lastname)searchValue
: 検索値
get_courses
コース一覧を取得します。
ids
: コースID配列(オプション)
get_user_courses
特定ユーザーのコース一覧を取得します。
userId
: ユーザーID
get_course_contents
コースのコンテンツとモジュールを取得します。
courseId
: コースID
get_assignments
アサインメント(課題)を取得します。
courseIds
: コースID配列(オプション)
拡張ツール
get_grades
成績を取得します。
courseId
: コースIDcomponent
: コンポーネント名(オプション)activityId
: 活動ID(オプション)userIds
: ユーザーID配列(オプション)
get_forums
フォーラムを取得します。
courseIds
: コースID配列(オプション)
get_categories
コースカテゴリを取得します。
criteria
: 検索条件(オプション)addSubcategories
: サブカテゴリを含める
Analytics APIツール
analytics_get_models
Analytics予測モデルを取得します。
includeDisabled
: 無効なモデルを含める
analytics_get_insights
Analyticsインサイトを取得します。
modelId
: モデルID(オプション)contextId
: コンテキストID(オプション)userId
: ユーザーID(オプション)status
: インサイトのステータス
analytics_train_model
Analyticsモデルをトレーニングします。
modelId
: モデルID
analytics_predict_model
Analyticsモデルから予測を取得します。
modelId
: モデルID
call_function
任意のMoodle Web Service関数を直接呼び出します。
functionName
: 関数名params
: パラメータ(オプション)
この汎用ツールを使用することで、上記にリストされていない任意のMoodle Web Service APIを呼び出すことができます。
開発
スクリプト
npm run build
- TypeScriptをコンパイルnpm run dev
- 開発モードで実行(ホットリロード)npm run lint
- ESLintでコードをチェックnpm run format
- Prettierでコードをフォーマットnpm test
- テストを実行
Docker開発環境
# 開発用イメージをビルド
docker build -t moodle-mcp:dev .
# 開発コンテナーを起動
docker run -it --rm \
-v $(pwd):/app \
-e MOODLE_SITE_URL=https://your-moodle-site.com \
-e MOODLE_WS_TOKEN=your-token \
moodle-mcp:dev
アーキテクチャ
プロジェクトは以下のような構造になっています:
src/
├── index.ts # MCPサーバーのエントリーポイント
├── services/
│ └── moodleClient.ts # Moodle API通信クライアント
├── handlers/
│ ├── extendedHandlers.ts # 拡張API機能
│ ├── analyticsHandlers.ts # Analytics API
│ └── comprehensiveHandlers.ts # 包括的なAPI機能
└── types/
├── moodle.ts # 基本的なMoodle型定義
└── analytics.ts # Analytics API型定義
Docker Hub
このプロジェクトのDockerイメージはDocker Hubで公開されています。
利用可能なタグ:
latest
- 最新の安定版v1.0.0
,v1.0
,v1
- 特定のバージョンmain
- 開発版(mainブランチ)
# 最新版を取得
docker pull shinonomelaboratory/moodle-mcp:latest
# 特定のバージョンを取得
docker pull shinonomelaboratory/moodle-mcp:v1.0.0