utol-mcp

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.

Category
访问服务器

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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选