FCPC-lms-mcp-server
FCPC LMS MCP サーバー
学生自身のMoodleアカウントに関する質問(課題の期限、未読メッセージ、未完了の小テスト、登録済みコースなど)にAIアシスタントが回答できるようにするMCPサーバーです。
学生はWeb版Claude、スマートフォン、デスクトップから、1つのURLを登録するだけで接続できます。ソフトウェアのインストールも、手作業でのトークンコピーも不要です。
First City Providential College向けに構築されていますが、Webサービスが有効なMoodleサイトであればどこでも動作します。
回答できる内容
課題の期限
教師やクラスメートからの未読メッセージ
未完了の小テスト
登録されているコース
"Do I have any new messages?"
"What is due this week?"Related MCP server: mcp-moodle
2つの実行方法
リモートサーバー | ローカルサーバー | |
対象 | クラスまたは組織全体 | 個人のマシンで使用する1人 |
クライアント | Claude(Web、iOS、Android、デスクトップ) | そのマシン上の任意のMCPクライアント |
学生の設定 | URLを1つ | 不要(ただしリポジトリのインストールが必要) |
サインイン | OAuth(Claudeが処理) |
|
エントリポイント |
|
|
ほとんどの導入ではリモートサーバーが推奨されます。
リモートサーバー(推奨)
必要条件
Python 3.11以降
cloudflared (
brew install cloudflared)またはHTTPSアドレスを公開するその他の方法サイト上のMoodleアカウント(セットアップ時にサイトアドレスを記録するため1回だけ使用)
管理者向け
setup.command(macOS)またはsetup.bat(Windows)を1回実行してサインインします。 これによりMoodleサイトアドレスが.envに書き込まれます。start-server.commandを実行します。配布用のURLが表示されます:
https://xxxx.trycloudflare.com/mcpそのウィンドウを閉じるとサーバーが停止するため、サービス使用中は開いたままにしてください。無料のtrycloudflare.comアドレスは再起動のたびに変わります。固定アドレスが必要な場合は
名前付きトンネル
を使用してください。
学生向け
任意のブラウザ(スマートフォンを含む)でclaude.aiを開きます。
設定 → コネクタ → カスタムコネクタを追加に移動します。
任意の名前を付け、受け取ったURLを貼り付けます。
ClaudeがMoodleのサインインページを開きます。通常のMoodleのユーザー名とパスワードでサインインします。
これでセットアップは完了です。以降はClaudeモバイルアプリでも動作します。
コネクタはClaudeのWebサイトからしか追加できませんが、スマートフォンのブラウザでも問題なく動作します。追加するとアプリに同期されます。
サインインの仕組み
Student's Claude ──HTTPS──▶ MCP server ──▶ Moodle
(OAuth)各ユーザーはOAuthサインインによって識別されます。学生がサインインすると、そのMoodleトークンはアクセストークン自体に暗号化されてClaudeに返されます。
サーバーはMoodleトークンもパスワードも一切保存しません
パスワードはトークンを取得するために1回だけ使用され、その後破棄されます
あるユーザーが別のユーザーのデータを見ることはできません
.oauth_key(暗号化キー)と.oauth_clients.jsonは機密情報です。どちらもgitから除外されています。.oauth_keyを削除すると全ユーザーがサインアウトされます。
ローカルサーバー
自分のマシン上でMCPサーバーをstdio経由で実行する場合の方法です。
setup.command/setup.batを実行するか、次のようにします:
python -m venv venv
source venv/bin/activate # macOS/Linux
.\venv\Scripts\activate # Windows PowerShell
pip install -r requirements.txt
python setup_gui.pyMCPクライアントを
server.pyに指定します。たとえばClaude Desktopのclaude_desktop_config.jsonでは次のようにします:
{
"mcpServers": {
"moodle": {
"command": "/path/to/venv/bin/python",
"args": ["/path/to/server.py"]
}
}
}AIが実際に受け取る内容を確認するには:
python list_tools.pyスタンドアロンのチャットクライアントも2つあります。client.py(OpenAI)と
client_localLLM.py(ollama)です。どちらもサーバースクリプトを引数として受け取ります:
python client.py server.pyテスト
selftest.pyはブラウザなしで確認できるすべての項目をチェックします:Moodle接続、両サーバー、実際のツール呼び出しまでのOAuthフロー、およびユーザーが互いのデータを見られないこと。
python selftest.py # all checks
python selftest.py --offline # skip anything needing the networkすべて成功すると終了コード0で終了し、残りの手動ステップ(Claudeでのコネクタ登録、サインイン、質問、スマートフォンでの再実行)を表示します。
インストール後、コード変更後、およびサーバーをホストするマシン上で実行してください。
Moodleに関する注意事項
一部のMoodleサイトはCloudflareの背後にあり、通常のHTTPSクライアントをHTTP 403で拒否します。そのため、リクエストはブラウザのTLSフィンガープリントを持つcurl_cffiを介して送信されます。これが、サーバーをApps Scriptなどで再実装できない理由であり、通常のネットワーク経路を持つ場所で実行する必要がある理由です。
SSO(Googleなど)経由でMoodleにサインインするユーザーはlogin/token.phpを使用できません。decode_token.pyがそのケースをカバーします。
ファイル
ファイル | 目的 |
| Claudeコネクタ用のOAuth付きリモートMCPサーバー |
| OAuth認可サーバー。トークンを保存しない |
| Claudeが開くMoodleサインインページ |
| stdio経由のローカルMCPサーバー |
| Moodle APIクライアント。インスタンスごとに1トークン |
| トークン取得と |
| セットアップウィザード |
| ダブルクリックでセットアップ(macOS / Windows) |
| リモートサーバーを公開(macOS) |
| インストールをエンドツーエンドでチェック |
| AIが参照するツールを表示 |
| コマンドラインからトークンを取得 |
| SSOユーザー向けのトークン抽出 |
| スタンドアロンチャットクライアント |
クレジット
MCPサーバー本体(server.py、client.py、client_localLLM.py)は
Jiseong JEONG(@jeongjisung690) によって作成されました。
元のリポジトリ:https://github.com/jeongjisung690/Moodle---MCP-server
このリポジトリでは以下を追加しています:
Cloudflareの背後にあるMoodleサイトのサポート
ユーザー名とパスワードからの自動トークン取得
SSOユーザー向けのトークン抽出
非技術者向けのセットアップウィザード
OAuth付きリモートMCPサーバー(学生は単一のURLで接続可能)
ライセンス
ライセンスは設定されていません。このコードを使用または再配布する前に、作成者に連絡してください。
This server cannot be deployed
Maintenance
Related MCP Connectors
Run the Geduk LMS from an AI assistant: courses, sessions, enrolments, users and catalogue.
Create, edit, translate, and export SCORM eLearning modules from a connected AI assistant.
Lucky AI study buddy over your own LlamaNotes courses: chat, progress, and AI course generation.
Connect AI assistants to Edusign attendance, courses, learners, documents, and API docs via OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Moodle learning management systems through the REST API. Supports course management, user enrollment, assignment handling, and forum operations through natural language.24 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with Moodle via web services, allowing tasks like listing courses, assignments, events, and downloading files.1036 PyPI4MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to read your Moodle courses, list materials, quizzes, and search content to plan exam preparation through natural language.1-
- AlicenseNot gradedqualityDmaintenanceConnects Moodle LMS with AI assistants through the Model Context Protocol, enabling users to interact with Moodle data via a conversational chatbot interface.5 npmMIT