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: Moodle MCP Server
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 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
- AlicenseNot gradedqualityDmaintenanceEnables 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.14MIT
- 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.14MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with Moodle via web services, allowing tasks like listing courses, assignments, events, and downloading files.104MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to read your Moodle courses, list materials, quizzes, and search content to plan exam preparation through natural language.1
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.
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/Ogaaawa/FCPC-lms-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server