Skip to main content
Glama

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が処理)

.env内のトークン

エントリポイント

remote_server.py

server.py

ほとんどの導入ではリモートサーバーが推奨されます。


リモートサーバー(推奨)

必要条件

  • Python 3.11以降

  • cloudflared (brew install cloudflared)またはHTTPSアドレスを公開するその他の方法

  • サイト上のMoodleアカウント(セットアップ時にサイトアドレスを記録するため1回だけ使用)

管理者向け

  1. setup.command(macOS)またはsetup.bat(Windows)を1回実行してサインインします。 これによりMoodleサイトアドレスが.envに書き込まれます。

  2. start-server.commandを実行します。配布用のURLが表示されます:

https://xxxx.trycloudflare.com/mcp

そのウィンドウを閉じるとサーバーが停止するため、サービス使用中は開いたままにしてください。無料のtrycloudflare.comアドレスは再起動のたびに変わります。固定アドレスが必要な場合は 名前付きトンネル を使用してください。

学生向け

  1. 任意のブラウザ(スマートフォンを含む)でclaude.aiを開きます。

  2. 設定 → コネクタ → カスタムコネクタを追加に移動します。

  3. 任意の名前を付け、受け取ったURLを貼り付けます。

  4. 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経由で実行する場合の方法です。

  1. 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.py
  1. MCPクライアントを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がそのケースをカバーします。

ファイル

ファイル

目的

remote_server.py

Claudeコネクタ用のOAuth付きリモートMCPサーバー

oauth_provider.py

OAuth認可サーバー。トークンを保存しない

login_page.py

Claudeが開くMoodleサインインページ

server.py

stdio経由のローカルMCPサーバー

moodle_client.py

Moodle APIクライアント。インスタンスごとに1トークン

moodle_auth.py

トークン取得と.envの処理

setup_gui.py

セットアップウィザード

setup.command / setup.bat

ダブルクリックでセットアップ(macOS / Windows)

start-server.command

リモートサーバーを公開(macOS)

selftest.py

インストールをエンドツーエンドでチェック

list_tools.py

AIが参照するツールを表示

get_token.py

コマンドラインからトークンを取得

decode_token.py

SSOユーザー向けのトークン抽出

client.py、client_localLLM.py

スタンドアロンチャットクライアント

クレジット

MCPサーバー本体(server.py、client.py、client_localLLM.py)は Jiseong JEONG(@jeongjisung690) によって作成されました。 元のリポジトリ:https://github.com/jeongjisung690/Moodle---MCP-server

このリポジトリでは以下を追加しています:

  • Cloudflareの背後にあるMoodleサイトのサポート

  • ユーザー名とパスワードからの自動トークン取得

  • SSOユーザー向けのトークン抽出

  • 非技術者向けのセットアップウィザード

  • OAuth付きリモートMCPサーバー(学生は単一のURLで接続可能)

ライセンス

ライセンスは設定されていません。このコードを使用または再配布する前に、作成者に連絡してください。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Moodle learning management systems through the REST API. Supports course management, user enrollment, assignment handling, and forum operations through natural language.
    24 npm
    MIT