NTNU Courses (unofficial) について
NTNU Courses (unofficial)は、NTNUの公開講義・学位プログラム情報をアシスタントに提供するリモートMCPサーバーです。講義情報、時間割、成績、試験、比較を扱う読み取り専用ツールを備えた非公式コミュニティプロジェクトです。
主な機能
- 01講義カタログの検索
- 02授業予定と時間割の取得
- 03成績分布の確認
- 04試験情報の照会
- 05プログラムと履修計画の検索
- 06講義比較と重複チェック
活用シーン
- 01キーワードと年度による講義検索
- 02試験日と許可される補助資料の確認
- 03履修登録前の講義比較
- 04授業時間と試験日の重複確認
MCP 対応
リモートMCPサーバーは、NTNUの公開講義、時間割、成績、試験、学位プログラム情報を扱う12個の読み取り専用ツールを公開します。クライアントは公開MCP URLから認証なしで接続できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://ntnu-mcp.martinsundal.no/mcpclaude mcp add --transport http martinsa04-ntnu https://ntnu-mcp.martinsundal.no/mcp{"mcpServers":{"martinsa04-ntnu":{"type":"http","url":"https://ntnu-mcp.martinsundal.no/mcp"}}}Cursor で開く{"servers":{"martinsa04-ntnu":{"type":"http","url":"https://ntnu-mcp.martinsundal.no/mcp"}}}VS Code で開く{"mcpServers":{"martinsa04-ntnu":{"type":"http","url":"https://ntnu-mcp.martinsundal.no/mcp"}}}{"mcpServers":{"martinsa04-ntnu":{"serverUrl":"https://ntnu-mcp.martinsundal.no/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
12| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| page | integer | いいえ | |
| year | integer | はい | |
| query | string|null | いいえ |
詳細
ntnu-mcp
NTNU(ノルウェー科学技術大学)の授業データを LLM アシスタントに提供するリモートMCP サーバーです。授業カタログ検索、授業スケジュール、週ごとの時間割、成績統計、授業の説明、試験に関する情報、公式の学習計画を含む学位プログラムに加え、授業選びに役立つ比較ツールを提供します。 Cloudflare Worker として動作するため、クライアント側でのインストールは不要です。
ツール
すべて読み取り専用の12個のツールです。
search_courses— 指定した年度の NTNU 授業カタログを自由なテキストで検索します。授業コード、名称、キャンパス、試験日を返します。get_course_schedule— 指定した年度における授業のすべての日付付き授業活動(講義、実験)を、オスロ現地時間と教室とともに返します。get_weekly_timetable— 授業の毎週繰り返される時間割を返します。曜日、時間、ISO 週の範囲、教室が含まれます。get_grade_distribution— 授業の過去の成績分布を、年度と学期ごとの件数および割合とともに返します。get_course_versions— 基本の授業コードに対応する、DBH バージョン付きの授業コード(例:TDT4100-1)を返します。成績の検索結果が空の場合に役立ちます。get_semesters—26h/26vのような ID、授業期間の週、試験期間の日付、現在の学期を含む NTNU の学期情報を返します。get_course_info— 試験に関する情報を除く、授業のすべての情報を返します。単位数、レベル、キャンパス、前提条件、必須活動、内容/学習成果、単位数の減免、その授業が開講予定の学位プログラム、連絡先、注意事項が含まれます。デフォルトは英語で、ノルウェー語にするにはlanguage: "nb"を指定します。get_exam_info— 1回の呼び出しで最大10授業の試験に関する情報を返します。通常試験/再試験のすべての機会について、日付、開始時刻、所要時間、許可される補助具のコード(「hjelpemiddelkode」)とその意味、試験システム、割り当てられた教室が含まれます。search_study_programs— テキスト、レベル、都市で NTNU の約400の学位プログラムを検索し、get_study_planで使用するプログラムコードを返します。get_study_plan— プログラムと入学年度のコホートに対する公式の学習計画を返します。各学期の授業(コード、単位数、必修/選択)と専攻選択の分岐点が含まれ、「X を学んでいます」という情報から具体的な授業コードにつなげます。compare_courses— 複数の授業を並べて比較します。名称、キャンパス、試験日、週あたりの授業時間、最新の成績分布が含まれます。check_timetable_conflicts— 履修登録の前に、複数の授業について週ごとのスケジュールの重複と試験日の衝突をペアごとに確認します。
接続
サーバーの MCP URL を Claude または ChatGPT のカスタムコネクター設定に貼り付けます。
https://ntnu-mcp.martinsundal.no/mcp
このサーバーは公開されている読み取り専用の NTNU 授業データのみを提供するため、認証は不要です。
このサーバーは公式 MCP レジストリにもio.github.MartinSA04/ntnu-mcpとして登録されています(server.jsonを参照)。レジストリを参照するクライアントは、そこでこのサーバーを見つけられます。これは非公式のコミュニティサーバーであり、NTNU とは提携していません。レジストリの更新はタグによって行われます。npm version <patch|minor|major> && git push --follow-tagsを実行すると、versionスクリプトがserver.jsonを同期し、リリースワークフローがチェック一式を実行して Worker をデプロイし、レジストリのエントリーを再公開(GitHub OIDC)して GitHub Release を作成します。
アーキテクチャ
NTNU の上流データ(エンドポイント、再試行ポリシー、Liferay カタログの解析、DBH の成績統計、TP の学期データ)はすべて、npm パッケージとしてこのリポジトリが依存する TypeScript クライアントライブラリ ntnu-api に含まれています。上流の修正や新しいデータソースの追加は、このリポジトリではなく ntnu-api で行います。 このリポジトリの役割は、型付けされたクライアントを呼び出し、LLM が利用しやすい形式に出力を整えることだけです。具体的には、英語名とノルウェー語名のフォールバック、オスロ現地時刻のタイムスタンプ、成績の行を学期ごとの分布表にまとめること、結果が空の場合の案内メモを提供します。このレイヤー構成については、ntnu-api の TypeScript 移行仕様で説明しています。
NTNU のサーバーへの負荷を最小限に抑えるため、すべての上流呼び出しは 2 階層でキャッシュされます(共有 Workers KV 名前空間の前段に、分離環境ごとのメモリキャッシュを配置)。そのため、各リソースは TTL ごとにグローバルでおおむね 1 回取得されます。カタログ検索、時間割、スケジュールは 1 時間、成績統計と学期一覧は 24 時間です。KV の障害時はメモリのみのキャッシュに切り替わり、ツールエラーにはなりません。テストではメモリのみのキャッシュが使用されます。
ローカル開発
Node 22 が必要です(mise で固定されています)。
mise install # installs the pinned Node version
npm install
mise タスクと npm スクリプトの両方で利用できる一般的なタスク:
mise run dev # npm run dev — wrangler dev, local worker with hot reload
mise run test # npm test — vitest, over captured fixtures (no live network)
mise run typecheck # npm run typecheck — tsc --noEmit
mise run lint # npm run lint — biome check
mise run fmt # npm run fmt — biome check --write
mise run check # lint + typecheck + test
テストは Workers プールではなく通常の Node 上で vitest を使って実行されます。ntnu-api のテストスイートからそのまま取得した fetch フィクスチャを使い、ツール関数を直接テストします。CI 環境でもローカル環境でも、実際の NTNU サービスへの呼び出しは行いません。
デプロイ
main へのプッシュで自動的にデプロイされます(このリポジトリは Cloudflare Workers Builds に接続されています)。チェックアウトから手動でデプロイする場合:
npm run deploy # wrangler deploy
Cloudflare の無料プランで動作します。MCP セッションの状態は SQLite ストレージを使用する Durable Object に保存されます。この機能は無料プランで利用できるため、大規模な運用でリクエストごとの CPU 制限に達しない限り、Workers Paid サブスクリプションは必要ありません。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。