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: Moodle MCP Server

2つの実行方法

リモートサーバー

ローカルサーバー

対象

クラスまたは組織全体

個人のマシンで使用する1人

クライアント

Claude(Web、iOS、Android、デスクトップ)

そのマシン上の任意のMCPクライアント

学生の設定

URLを1つ

不要(ただしリポジトリのインストールが必要)

サインイン

OAuth(Claudeが処理)

.env内のトークン

エントリポイント

remote_server.py

server.py

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


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

必要条件

  • Python 3.11以降

  • cloudflaredbrew 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.pyclient_localLLM.py

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

クレジット

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

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

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

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

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

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

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

ライセンス

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

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Moodle learning management systems through the Moodle REST API. Supports course management, user enrollment, assignments, forums, quizzes, and file operations through natural language.
    14
    MIT
  • 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.
    14
    MIT

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

  • Connect AI assistants to ITM Platform projects, tasks, budgets, risks, and team workload.

View all MCP Connectors

Latest Blog Posts

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/Ogaaawa/FCPC-lms-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server