utol-mcp
Enables users to interact with the University of Tokyo's UTOL learning management system through natural language, providing access to courses, assignments, deadlines, notifications, and materials via MCP clients like Claude Desktop.
README
utol-mcp
東京大学の学習管理システム UTOL (UTokyo LMS) を、MCP クライアント(Claude Desktop など)から 扱えるようにする個人用の MCP サーバーです。受講登録済みの講義・締切・お知らせ・教材・課題などを 自然言語で参照できます。
ローカル実行を前提とし、機能は読み取りが中心です。認証はユーザー本人が公式の UTokyo Account ログイン画面で行い、ツールはパスワードや MFA コードを扱いません。
できること
- 受講登録済みの講義(時間割)・お知らせ・教材リンクの一覧
- 全科目を横断した課題・テストの締切一覧、課題詳細の参照
- シラバス(UTAS)の参照、受講登録外コースの検索(公開カタログ情報のみ)
- 教材ファイルの個別ダウンロード
- 課題の「提出不要」切替、コースの受講登録・解除(確認付きの書き込み操作)
セットアップ
1. インストールとログイン
npx で実行する場合は次のとおりです。
npx -y utol-mcp login
ブラウザが開くので、UTokyo Account でログインしてください。ログインが確認されると、以降の実行で
再認証が不要になります(セッションは ~/.utol-mcp/ に保存されます)。
状態確認・ログアウト
npx -y utol-mcp auth-status # ログイン済みか確認 npx -y utol-mcp logout # セッションとキャッシュを削除
2. MCP クライアントに登録
Claude Desktop などの設定ファイルに次を追加します。
{
"mcpServers": {
"utol": { "command": "npx", "args": ["-y", "utol-mcp", "serve"] }
}
}
登録後、クライアントから「今週の課題の締切は?」「〇〇の講義のお知らせを見せて」のように 自然言語で問い合わせできます。
提供ツール
読み取り中心のツールです。
| ツール | 説明 | 主な引数 |
|---|---|---|
auth_status |
ログイン状態の確認 | — |
list_courses |
受講登録している講義(時間割)一覧 | refresh? |
get_course |
講義詳細(お知らせ・教材・課題) | idnumber |
list_assignments |
全科目横断の課題・テスト一覧と締切 | refresh? |
get_assignment |
課題詳細(読み取りのみ) | idnumber, url |
get_syllabus |
シラバス(UTAS 参照) | idnumber, syllabusUrl? |
search_courses |
コース検索(受講登録外可・公開カタログ情報のみ) | keyword?, teacher?, year? |
download_material |
教材ファイルの単一ダウンロード | idnumber, resourceId, destPath |
list_messages |
メッセージ一覧(メタのみ・本文なし) | refresh? |
refresh_cache |
主要一覧の再取得 | — |
get_course/get_assignment/download_materialは、受講登録中のコースのみ対象です。download_materialの対象はget_courseが返すmaterials[].resourceIdで指定します。- 受講登録外コースは
search_coursesが返す公開カタログ情報とシラバスのみを参照できます。
書き込み操作
状態を変更する操作です。confirm:true が無い場合は実行せずプレビューのみを返し、実行時は
~/.utol-mcp/audit.log に記録が残ります。特に unregister_course は受講登録・提出物に影響します。
| ツール | 説明 | 可逆性 |
|---|---|---|
set_task_no_submission |
課題を「提出不要」⇔「未提出」に切替 | 可逆 |
register_course |
コースを受講登録 | 解除可能 |
unregister_course |
受講登録を解除 | 要注意(データ喪失の可能性) |
ポリシー
- 個人の学習支援を目的とし、大量アクセスや教材収集には用いません。
- UTokyo SSO・MFA・CAPTCHA・アクセス制御・レート制限を回避しません。
- 認証はユーザー本人が正規ログイン画面で行い、ツールは資格情報を収集・保存・入力しません。
- 受講登録外コースは公開カタログ情報とシラバスのみを取得し、保護された内部コンテンツは取得しません。
- セッション情報は機密情報として
~/.utol-mcp/(権限 700)に保存します。Git・ログ・クラウドには含めないでください。 - 利用者は大学の規則、UTOL の利用規程、関連法令を守る必要があります。
- 本ツールは無保証で提供されます。利用に伴う損害や不利益について、開発者は一切の責任を負いません。利用者自身の責任で使用してください。
詳細は docs/AUTHENTICATION_POLICY.md を参照してください。
認証の仕組み
UTOL のアプリセッションはブラウザ終了時に失われますが、utol-mcp login で確立した UTokyo Account
(Microsoft SSO)の永続セッションが端末に残るため、以降のツール実行時は資格情報・MFA なしの
リダイレクトのみでセッションが再確立されます。再認証の途中で資格情報・MFA・アカウント選択が
要求された場合は直ちに中止し、手動ログインを促します。詳細は
docs/AUTHENTICATION_POLICY.md を参照してください。
開発
TypeScript 製です。npm install 時の prepare スクリプトで dist/ へ自動ビルドされるため、
npx でも動作します。ローカルで開発する場合は次のとおりです。
npm install # 依存 + Chromium 取得 + 自動ビルド
npm run build # 変更を反映する際に再ビルド
npm test # パーサ・日時正規化の単体テスト
npm run typecheck
node dist/index.js login # ローカルビルドでの実行例
MCP クライアントにローカルビルドを登録する場合は、serve を次のように指定します。
{ "command": "node", "args": ["/absolute/path/to/utol-mcp/dist/index.js", "serve"] }
実 UTOL に対する主要フロー(ログイン・認証再確立・時間割/課題/講義/シラバス/検索/教材DL)は
実機で検証済みです。test/fixtures/raw/(.gitignore 済み)に実 HTML を保存してパーサの
セレクタを確定しています。UTOL 側の画面改修時は、同ディレクトリの HTML を更新して
パーサを再確認してください。
ライセンス
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。