🚀 ジョージア工科大学総合MCPサーバー
高度なMCP(Model Context Protocol)サーバーで、LLMにジョージア工科大学の学術および研究エコシステムへの包括的なアクセスを提供し、複数のGTシステムを統合してインテリジェントなワークフローを実現します。現在、OSCARの500エラー修正により信頼性の高いコース検索が可能になり、ChatGPT HTTP統合も実装されています。
✨ 主な機能
ChatGPT統合 ✨ 新機能: HTTP APIサーバー
- FastAPI HTTPサーバー: ChatGPTカスタムツール統合用の完全なHTTP API
- CORS有効化: ChatGPTドメインからのクロスオリジンリクエストをサポート
- JSONレスポンス: すべてのエンドポイントがChatGPTで利用可能な適切なJSONを返す
- 自動ドキュメント:
/docs
エンドポイントでインタラクティブなOpenAPI/Swaggerドキュメントを提供
- ヘルスモニタリング: リアルタイムのサービスヘルスチェックとモニタリング
コアコーススケジューリング(OSCARシステム) ✨ 500エラー修正済み
- 利用可能な学期: コース検索に利用可能な学期のリストを取得
- 学科検索: 指定された学期の利用可能な学科/科目を取得
- コース検索: 学科、コース番号、またはタイトルでコースを検索し、信頼性を向上
- コース詳細: 座席の空き状況、ウェイトリスト情報、制限事項などの詳細情報を取得
- 改善されたワークフロー: 適切なGTナビゲーションパターンを実装することで、500サーバーエラーを修正
研究と知識システム(SMARTechリポジトリ)
- 研究論文検索: 500以上の研究論文、学位論文、および出版物を検索
- 教員研究マッチング: 研究興味と共同研究履歴から教員を検索
- 研究トレンド分析: 時間をかけて出版物のトレンドを分析
- 相互参照: 研究分野を関連するコースにリンク
キャンパスインフラストラクチャ(場所とGIS)
- ロケーションサービス: キャンパスの建物と施設を検索
- アクセシビリティ情報: 詳細なアクセシビリティ機能とルート案内
- サービス検索: 特定のサービス(AV機器、ケータリングなど)を提供する建物を検索
- 空間分析: ルート計画と近接検索
システム間統合
- 研究とコースの相関: "私のロボット工学研究をサポートするコースはどれですか?"
- 教員とコースのマッチング: "私の研究分野に関連するコースを教えている教員は誰ですか?"
- リソース最適化: "コンピュータサイエンス棟の近くでネットワーキング機器を備えた研究室を探す"
- 学術計画: "研究機会を考慮した学位取得経路を計画する"
📦 インストール
自動セットアップ(推奨)
-
セットアップスクリプトを実行します。
./setup.sh
これにより、conda環境が自動的に作成され、すべての依存関係がインストールされます。
-
サーバーを起動します。
./start_server_chatgpt.sh
./start_server_expanded.sh
./start_server.sh
手動セットアップ
-
conda環境を作成します。
conda create -n gtmcp python=3.11 -y
conda activate gtmcp
-
依存関係をインストールします。
pip install -r requirements.txt
pip install -e .
-
機能をテストします。
python test_server.py
python test_expanded_server.py
-
単体テストを実行します。
python -m pytest tests/ -v
-
サーバーを起動します。
python -m gtmcp.server_fastapi --host 0.0.0.0 --port 8080
python -m gtmcp.server_expanded
python -m gtmcp.server
ChatGPT統合のセットアップ
クイックスタート
-
HTTPサーバーを起動します。
./start_server_chatgpt.sh
サーバーはデフォルトでhttp://0.0.0.0:8080
で実行されます。
-
ChatGPTを設定します。
- ChatGPTの設定を開きます。
- ベータ機能に移動します。
- "カスタムGPTとツール"を有効にします。
- 新しいカスタムツールを作成します。
- 名前: ジョージア工科大学MCPサーバー
- 説明: GTのコーススケジュールと研究にアクセス
- URL:
http://localhost:8080
利用可能なHTTPエンドポイント
GET / # サーバー情報と機能
GET /health # システムのヘルスステータス
GET /tools # 利用可能なMCPツール
GET /api/semesters # 利用可能な学術学期
GET /api/subjects/{term_code} # 特定の学期の学科
GET /api/courses # コース検索(クエリパラメータ: term_code, subject)
GET /api/courses/{term}/{crn} # 詳細なコース情報
GET /api/research # 研究論文検索(クエリパラメータ: keywords, max_records)
GET /docs # インタラクティブなAPIドキュメント
GET /openapi.json # OpenAPI仕様
GET /.well-known/ai-plugin.json # ChatGPT AIプラグインマニフェスト
GET /legal # 法的情報と利用規約
ChatGPTクエリの例
- "2025年春学期に利用可能なコンピュータサイエンスのコースは何ですか?"
- "機械学習に関する研究論文を探す"
- "2025年春学期のコースCRN 12345の詳細を取得"
- "2024年秋学期に利用可能な学科は何ですか?"
MCPツール(17の総合ツール)
コースと学術ツール
get_available_semesters
利用可能な学期のリストを取得します。
- 入力: なし
- 出力: コードと名前付きの学期のリスト
get_subjects
学期に利用可能な学科/学部を取得します。
- 入力:
term_code
(例: "202502"は2025年春学期)
- 出力: 学科コードと名前のリスト
search_courses
指定された学期と学科でコースを検索します。
- 入力:
term_code
: 学期コード
subject
: 学科コード(例: "CS", "MATH")
course_num
(オプション): コース番号フィルター
title
(オプション): タイトル検索フィルター
- 出力: CRN付きの一致するコースのリスト
get_course_details
特定のコースの詳細情報を取得します。
- 入力:
term_code
: 学期コード
crn
: コース参照番号
- 出力: 座席、ウェイトリスト、制限事項を含む詳細なコース情報
研究と知識ツール
search_research_papers
ジョージア工科大学の研究リポジトリから論文を検索します。
- 入力:
keywords
: 検索キーワードの配列
subject_areas
: フィルタリングする学科分野
date_from/date_until
: 日付範囲フィルター
max_results
: 返す最大結果数
- 出力: 要約とメタデータ付きの研究論文のリスト
find_faculty_research
研究分野から教員の研究プロファイルを検索します。
- 入力:
research_area
(例: "ロボット工学", "AI")
- 出力: 研究興味と出版物付きの教員プロファイル
analyze_research_trends
キーワードに対する時間をかけた研究トレンドを分析します。
- 入力:
keywords
: 分析するキーワード
years
: 分析する年数
- 出力: 年間の出版物数でのトレンド分析
get_repository_info
GT研究リポジトリに関する情報を取得します。
- 入力: なし
- 出力: リポジトリのメタデータと統計情報
キャンパスとロケーションツール
search_campus_locations
キャンパスの建物と場所を検索します。
- 入力:
query
: 建物/場所名の検索クエリ
services
: 必要なサービス(例: "AV機器")
accessible
: 車椅子アクセス可能な場所をフィルター
- 出力: 一致するキャンパスの場所のリスト
get_location_details
特定の場所の詳細情報を取得します。
- 入力:
building_id
: 建物識別子
- 出力: サービスとアクセシビリティを含む完全な場所の詳細
find_nearby_locations
特定の建物の近くの場所を検索します。
- 入力:
center_building_id
: 検索する中心の建物
radius_meters
: 検索半径
services
: フィルタリングするサービス
- 出力: 半径内の近くの場所のリスト
get_accessibility_info
建物の詳細なアクセシビリティ情報を取得します。
- 入力:
building_id
: 建物識別子
- 出力: 包括的なアクセシビリティ機能とサービス
システム間統合ツール
suggest_research_collaborators
研究興味に基づいて潜在的な共同研究者を提案します。
- 入力:
research_area
: 共同研究のための研究分野
keywords
: 特定の研究キーワード
- 出力: 重複分析付きの提案された教員と研究者
find_courses_for_research
特定の研究分野に関連するコースを検索します。
- 入力:
research_topic
: 研究トピックまたは分野
term_code
: 検索する学期(オプション)
- 出力: 研究関連付け付きの関連コース
check_system_health
すべての統合されたGTシステムのヘルスステータスを確認します。
- 入力: なし
- 出力: OSCAR、SMARTech、Placesなどのシステムのステータスレポート
設定
サーバーはconfig.json
を介して設定できます。
{
"server": {
"host": "0.0.0.0",
"port": 8080,
"log_level": "INFO"
},
"scraper": {
"delay": 1.0,
"timeout": 30,
"max_retries": 3
},
"cache": {
"enabled": true,
"ttl_seconds": 3600
}
}
コマンドラインオプション
python -m gtmcp.server --config /path/to/config.json
python -m gtmcp.server --host 127.0.0.1 --port 9000 --log-level DEBUG
./start_server.sh --host 127.0.0.1 --port 9000
💻 使用例
基本的なコーススケジューリング
search_courses(term_code="202502", subject="CS")
get_course_details(term_code="202502", crn="25645")
研究と教員の発見
search_research_papers(keywords=["機械学習", "AI"], max_results=10)
find_faculty_research(research_area="ロボット工学")
analyze_research_trends(keywords=["人工知能"], years=5)
キャンパスナビゲーションとサービス
search_campus_locations(services=["AV機器"], accessible=True)
find_nearby_locations(center_building_id="library", radius_meters=500)
get_accessibility_info(building_id="klaus_building")
システム間インテリジェンス
find_courses_for_research(research_topic="持続可能性", term_code="202502")
suggest_research_collaborators(research_area="ネットワーキング", keywords=["ワイヤレス", "5G"])
check_system_health()
レート制限
スクレイパーには、GT OSCARシステムに配慮した設定可能な遅延とリトライロジックが含まれています。
- リクエスト間のデフォルトの1秒の遅延
- リクエストごとの30秒のタイムアウト
- 指数バックオフによる最大3回のリトライ
テスト
このプロジェクトには、すべての統合システムに対する包括的なテストが含まれています。
包括的なテストスイート(124以上のテスト)
- 38のHTTPサーバーテスト: FastAPIエンドポイントテストとChatGPT統合の検証
- 17の外部サーバーテスト: サブプロセス管理による実際のHTTPサーバー統合テスト
- 69以上のMCP単体テスト: 元のMCP機能の検証とクライアントテスト
HTTPサーバーとChatGPT統合テスト
python -m pytest tests/test_fastapi_server.py tests/test_external_server.py -v
python -m pytest tests/test_fastapi_server.py -v
python -m pytest tests/test_external_server.py -v
python -m pytest tests/test_fastapi_server.py::TestFastAPIServerBasic -v
python -m pytest tests/test_external_server.py::TestExternalServerChatGPTCompatibility -v
単体テスト
- モデルテスト: データ検証とシリアライゼーション
- 設定テスト: 設定の読み込みと検証
- クライアントテスト: すべてのGTシステムクライアントのモックレスポンス付き
- サーバーテスト: MCPサーバーツールとエラーハンドリング
- 統合テスト: システム間ワークフローの検証
すべてのテストを実行:
python -m pytest tests/ -v
特定のテストモジュールを実行:
python -m pytest tests/test_oscar_client.py -v
python -m pytest tests/test_smartech_client.py -v
python -m pytest tests/test_places_client.py -v
python -m pytest tests/test_server_expanded.py -v
統合テスト
python test_server.py
python test_expanded_server.py
テストカテゴリ
FastAPIサーバーテスト(21のテスト)
- ✅ 基本機能: ルート、ヘルス、およびツールエンドポイント
- ✅ OSCAR統合: モックデータを使用した学期、学科、コース、および詳細
- ✅ 研究統合: 論文検索と研究エンドポイント
- ✅ ChatGPT互換性: CORS、JSONレスポンス、AIプラグインマニフェスト、法的エンドポイント
- ✅ パフォーマンス: 同時リクエスト、大きなレスポンス、エラー回復
外部サーバーテスト(17のテスト)
- ✅ 実際のHTTPサーバー: サブプロセス起動と外部HTTPテスト
- ✅ ChatGPT統合: クロスオリジンリクエストとレスポンス検証
- ✅ サーバーの信頼性: 負荷テスト、メモリ安定性、エラー回復
- ✅ APIドキュメント: OpenAPI仕様とインタラクティブなドキュメントの検証
システムヘルスチェック
python -c "
from gtmcp.server_expanded import *
import asyncio
asyncio.run(main())
" --help
エラーハンドリング
アプリケーションには包括的なエラーハンドリングが含まれています。
- ネットワークエラー: 指数バックオフによるリトライロジック
- 解析エラー: 不正なHTMLの適切なハンドリング
- 検証エラー: 明確なエラーメッセージ付きの入力検証
- サーバーエラー: MCPツールの構造化されたエラーレスポンス
すべてのエラーは適切な重大度レベルでログに記録され、デバッグに役立つコンテキストが含まれています。
データ可用性に関する注意
ジョージア工科大学は、古い学期がドロップダウンに表示されている場合でも、次の学期以降のコース詳細を維持しない可能性があります。常に要求された学期にコースが実際に利用可能かどうかを確認してください。