smu-elearn
[!IMPORTANT] このプロジェクトは、D2L または SMU によって課される認証および制限を回避または迂回しようとするものではありません。Chrome を介して適切な認証を行った後、D2L API を直接利用します。このプロジェクトは SMU または D2L とは一切関係がありません。問題が発生した場合は、直接私に連絡するか、issue を作成してください。
SMU eLearn MCP
SMU の D2L Brightspace デプロイメント向けの、ローカルで動作する読み取り専用の Model Context Protocol サーバーです。コース、ピン留めされたコース、週次モジュール、コースドキュメント、最近のアップロード/変更、コンテンツ検索、メタデータ、およびファイルダウンロードを公開します。
これはローカルな単一ユーザー向け stdio サービスです。ネットワークサーバーとして公開したり、ユーザー間で共有したりすることを意図していません。
この MCP を利用する最良の方法は、Codex または Claude を経由することです。plugin-package/ フォルダー以下に、インストール可能なプラグインとしてパッケージ化してあります。
機能
MCP ツール | 目的 |
| SMU の SSO/MFA のために Chrome を開き、1 分待機して自動的に検証し、セッションを保存します。 |
| ローカルに保存されたブラウザセッションが eLearn API にアクセスできることを検証します。 |
| アクセス可能なコースを、ID、コード、日付、ロール、ピン留め状態とともに一覧表示/検索します。 |
| 信頼できる D2L の |
| ネストされた |
| 1 つのコースと 1 つの学術週/モジュールのすべてのドキュメントを取得します。 |
| ピン留め/全/選択コースにわたって、暦週の間にアップロードまたは変更されたドキュメントを取得します。 |
| 1 つのコース内のすべてのドキュメントを再帰的に一覧表示します。 |
| コース横断でドキュメントのタイトルとモジュールパスを検索します。 |
| 1 つの D2L コンテンツトピックのメタデータを取得します。 |
| 既存のフアイルを上書せずに、トピックのフアイルをローカルにダウンロードします。 |
実装は、D2L の文書化された読み取り専用 API ルートを使用します。表示されるホームページをスクレイピングせず、コース、ピン留め状態、提出物、成績、メッセージ、またはコンテンツを変更しません。
Related MCP server: D2L Brightspace MCP Server
要件
Node.js 22 以降
Google Chrome
eLearn にアクセスできる SMU アカウント
インストールと認証
cd elearn-mcp
npm ci
npm run authnpm run auth は専用の Chrome プロファイルを開きます。通常の SMU Microsoft サインインと MFA フローを完了してください。1 分後、コマンドは eLearn API を自動的にチェックします。サインインがまだ完了していない場合、最大 5 分間、15 秒ごとにチェックします。成功すると、Playwright のブラウザセッション状態を保存し、状態フアイルの権限を所有者のみ(0600)に制限して、Chrome を閉じます。ターミナルへの入力は不要です。
プロファイルはデフォルトで ~/.elearn-mcp/browser-profile に、保存される状態はデフォルトで ~/.elearn-mcp/storage-state.json になります。この状態にはセッションクッキーが含まれ、オリジンスコープの Web ストレジが含まれる場合もあります。そのため、両方の場所を秘密情報として扱い、コミット、同期、共有をしないでください。MCP がパスワードや MFA 応答を尋ねたり保存したりすることは決してありません。
型安全性、ユニットテスト、クリーンな本番ビルドを検証してください:
npm run check認証後、完全なライブ MCP テストを実効してください:
npm run test:fullこの完全な実行では、型チェックとユニットテストを実施し、本番サーバーをビルドして、MCP stdio 経由で接続し、ライブの eLearn データに対して 11 個すべてのツールを検証し、実際のファイルを 1 つ隔離された OS の一時ディレクトリにダウンロードして、そのファイルを検証し、finally クリーンアップで一時ディレクトリを削除します。eLearn 内のデータを送信または変更することは決してありません。
MCP クライアントの設定
最初にプロジェクトをビルドし、次にコンパイルされた stdio サーバーを起動するように MCP クライアントを設定してください:
{
"mcpServers": {
"smu-elearn": {
"command": "node",
"args": [
"/absolute/path/to/elearn-mcp/dist/src/server.js"
],
"env": {
"ELEARN_BASE_URL": "https://elearn.smu.edu.sg",
"ELEARN_LP_VERSION": "1.49",
"ELEARN_LE_VERSION": "1.49",
"ELEARN_COURSE_ORG_UNIT_TYPE_ID": "3"
}
}
}
}この JSON の正確な場所は MCP クライアントによって異なります。設定を変更した後はクライアントを再起動してください。
本番ランタイム
サーバーはロックされた依存関係セットからビルドされます。テストは検証中に型チェックおよび実行されますが、dist/ と配布可能なパッケージからは除外されます。
最小限のローカルランタイムの場合:
npm ci
npm run check
npm prune --omit=dev
npm start開発依存関係を削除した後は、再ビルドまたはユニットテストを実行する前に npm ci を再度実行してください。同梶の GitHub Actions ワークフローは、Node.js 22 で同じロック付きインストールと検証を実行します。認証付きライブテストは、対話型の SMU アカウントと MFA が必要なため、CI から除外されています。
Codex および Claude プラグインのビルド
src/ 配下の TypeScript フアイルが、MCP 実装の唯一のソースです。Codex と Claude Code は、それぞれ別のプラグインマニフェストと MCP 起動メタデータを使用しますが、両方とも同じ生成ランタイムを受け取ります:
plugin-package/
├── codex/smu-elearn/
│ ├── .codex-plugin/plugin.json
│ ├── .mcp.json
│ └── mcp/
└── claude/smu-elearn/
├── .claude-plugin/plugin.json
├── .mcp.json
└── mcp/以下のコマンドで、新規の自己完結型プラグインッケージを両方ビルドします:
npm run build:pluginsnpm run build:plugin は同じコマンドのエイリアスです。ビルドは src/ を一度コンパイルし、ルートのロックフアイルから正確な本番依存関係のバージョンを導出し、隔離されたステージングディレクトリに本番依存関係を一度インストールし、ステージングされた完全なコピーが検証された後にのみ、各 mcp/ ディレクトリを置き換えます。生成されたランタイムを手作業で編集しないでください。
Claude Code 開発では、パッケージを直接検証してロードしてください:
claude plugin validate ./plugin-package/claude/smu-elearn --strict
claude --plugin-dir ./plugin-package/claude/smu-elearnClaude Code 内で /mcp を実行すると、バンドルされたサーバーを確認できます。永続的なローカルインストールの場合は、パッケージをビルドしてから、このリポジトリのマーケットプレースを追加してください:
claude plugin marketplace add /absolute/path/to/elearn-mcp
claude plugin install smu-elearn@smu-local --scope userマーケットプレースカタログは .claude-plugin/marketplace.json
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 Purdue University students to access their Brightspace academic data including courses, assignments, and grades through web scraping with Duo Mobile 2FA authentication. Provides programmatic access to student academic information when official API access is restricted.7Apache 2.0
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with D2L Brightspace LMS, providing access to assignments, grades, course content, calendar events, and announcements through automated SSO authentication.122210MIT
- FlicenseAqualityCmaintenanceEnables read-only querying of Moodle as a student, including courses, assignments, grades, forums, and files, using a personal web services token.11
- FlicenseBqualityCmaintenanceEnables browsing and collecting course materials from Brightspace through Chrome DevTools Protocol, allowing snapshotting, downloading media, and automating page navigation.22
Related MCP Connectors
Multi-engine scholarly research server for search, traversal, full text, and reading lists.
Search, browse, and read your Dropbox files. Find documents by name or content, list folders, and…
Federated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.
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/tancysam/elearn-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server