mcpField
N
NTNU Courses (unofficial)

NTNU Courses (unofficial)

リモート
github.com科学・教育013 週間前に更新
リポジトリ公式サイト

NTNU Courses (unofficial) について

NTNU Courses (unofficial)は、NTNUの公開講義・学位プログラム情報をアシスタントに提供するリモートMCPサーバーです。講義情報、時間割、成績、試験、比較を扱う読み取り専用ツールを備えた非公式コミュニティプロジェクトです。

主な機能

  1. 01講義カタログの検索
  2. 02授業予定と時間割の取得
  3. 03成績分布の確認
  4. 04試験情報の照会
  5. 05プログラムと履修計画の検索
  6. 06講義比較と重複チェック

活用シーン

  1. 01キーワードと年度による講義検索
  2. 02試験日と許可される補助資料の確認
  3. 03履修登録前の講義比較
  4. 04授業時間と試験日の重複確認

MCP 対応

リモートMCPサーバーは、NTNUの公開講義、時間割、成績、試験、学位プログラム情報を扱う12個の読み取り専用ツールを公開します。クライアントは公開MCP URLから認証なしで接続できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://ntnu-mcp.martinsundal.no/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

12
パラメーター型必須説明
pageintegerいいえ
yearintegerはい
querystring|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 を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。