名古屋大学のtactや京都大学のKULMSなどで使われている LMS (学習管理システム) Sakai の非公式MCPサーバを作成したので、導入方法や使用感、簡単な仕組みなどを記事にしました。
導入方法
1. ダウンロード
こちらのサイトから圧縮ファイルをダウンロードし、任意のフォルダに解凍します。
2. MCPクライアントの設定
解凍したフォルダ内にある実行スクリプト(run.bat または run.sh)の絶対パスをコピーし、Claude Desktop や Antigravity 等の MCP 設定ファイル(例: claude_desktop_config.json)に追記します。
Windows
{
"mcpServers": {
"sakai-tasks": {
"command": "cmd.exe",
"args": [
"/c",
"C:\\tools\\sakai-tasks-mcp-windows\\run.bat"
]
}
}
}
macOS
{
"mcpServers": {
"sakai-tasks": {
"command": "/Users/ユーザー名/tools/sakai-tasks-mcp-macos/run.sh",
"args": []
}
}
}
AIにパスを教えて、「このMCPサーバを登録して」のように指示したほうが確実だと思います。
3. 初期設定と大学ポータルへのログイン
MCPクライアントの設定後、AIアプリを再起動してください。
「設定画面を開いて」とAIに言うと、このような設定画面が開くので、大学のSakaiのドメインを入力して設定を閉じてください。

ドメイン入力後、AIに通知や課題を取得するように言うと、大学のログイン画面が表示されます。そこでログインを完了させれば、導入完了です。
使用感について
ログイン周りの動作
ログインクッキーとWebViewのプロファイルを保持する仕組みになっているため、初回以降にログイン操作を求められることはほとんどありません。また、セッションが切れて再認証が必要になったタイミングでのみログイン画面が開く仕様のため、普段ブラウザでSakaiを使っているのと変わらない手軽さで利用できます。
応答速度にはやや課題
flashモデルでも10秒以上かかることが多いです。そのため、直接ブラウザで見たほうが速いと感じるケースがよくあります。しかし、遅い原因は基本的に大学のサーバの能力と、AIの思考時間が大半で、これらによってはもっと高速に動作する場合もあります。
便利だと思った使い方
講義資料の一括ダウンロードと整理
複数の講義の資料をまとめてダウンロードし、フォルダごとに整理してもらえます。Sakaiで講義ページを何度も行き来しながら手動で行うより、はるかに楽です。
時間割の自動作成
講義情報を横断して取得し、その場で時間割を作ってくれます。
仕組み
本ツールがどのように動作しているのか、MCP、Sakai の API、そして認証周りの3点に分けて簡単に紹介します。
MCP (Model Context Protocol) について
MCP は、Claude Desktop などの AI アシスタントと外部のツールやデータソースを安全かつ統一されたプロトコルで接続するためのオープン規格です。
AI が直接 Web サイトやデータベースを操作する代わりに、本 MCP サーバが「課題一覧を取得する」「講義資料をダウンロードする」といった具体的なツール(関数)を AI 向けに公開し、AI は必要に応じてそれらを呼び出して結果を受け取っています。
Sakai の Direct API によるデータ取得
Sakai には、外部システムとの連携用に REST 形式の Direct API(/direct/...)が標準で備わっています。
本ツールでは、この Direct API を叩いて JSON 形式などで課題や講義情報、お知らせなどの構造化データを取得しています。これにより、画面レイアウトの変更に影響されにくく、安定した情報取得が可能になっています。
認証・セッション管理の仕組み
大学の Sakai は学認(IdP/SSO)や多要素認証(MFA)が導入されていることが多く、API キーや ID/パスワードの直接送信だけで認証を通すのが難しいという問題があります。
そこで本ツールでは、以下のような方法で認証を行っています。
-
WebView によるブラウザ認証
認証が必要になった際、ツール側で独立したブラウザ(WebView)ウィンドウをポップアップさせます。大学独自のログイン画面やワンタイムパスワードの入力は、ユーザー自身が通常通りその画面で行います。 -
Cookie とプロファイルの永続化
ログイン成功時に発行されるセッション Cookie やブラウザプロファイルをローカル環境に保存します。以降の Direct API 呼び出し時にはこの認証済み Cookie を付与してリクエストを送るため、2回目以降は自動的に認証が維持されます。 -
セッション失効時のオンデマンド再認証
Cookie の有効期限が切れたりセッションが無効になった場合は、API エラーを検知して再度ログイン画面を自動で開き、再ログインを促します。
認証およびセッション管理はすべてローカル環境(本ツール内)で完結して動作します。メールアドレス、パスワード、ログインセッション情報、およびブラウザプロファイルがAIや第三者に送信されることは一切ありません。また、ログインセッションはOSのセキュアストア(Keyring / 資格情報マネージャー等)で保護された暗号化鍵を用いてFernet(AES暗号化)によりローカルに暗号化保存されるため、安全に保持されます。
