这是一个先进的MCP(模型上下文协议)服务器,它为大语言模型提供全面访问佐治亚理工学院学术和研究生态系统的能力,集成了多个佐治亚理工学院的系统,以实现智能工作流程。现已修复OSCAR 500错误,可实现可靠的课程搜索,并集成了ChatGPT HTTP服务。
/docs端点提供交互式的OpenAPI/Swagger文档。运行安装脚本:
./setup.sh
这将自动创建conda环境并安装所有依赖项。
启动服务器:
# 用于ChatGPT集成(HTTP API服务器)
./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
运行服务器:
# ChatGPT HTTP API服务器
python -m gtmcp.server_fastapi --host 0.0.0.0 --port 8080
# 扩展服务器(推荐)
python -m gtmcp.server_expanded
# 仅用于原始课程调度
python -m gtmcp.server
# 搜索2025年春季的计算机科学课程
search_courses(term_code="202502", subject="CS")
# 获取特定课程的详细信息
get_course_details(term_code="202502", crn="25645")
# 查找关于机器学习的研究论文
search_research_papers(keywords=["machine learning", "AI"], max_results=10)
# 查找从事机器人研究的教师
find_faculty_research(research_area="robotics")
# 分析人工智能研究5年的趋势
analyze_research_trends(keywords=["artificial intelligence"], years=5)
# 查找配备视听设备的无障碍建筑
search_campus_locations(services=["AV equipment"], 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="sustainability", term_code="202502")
# 为网络研究推荐合作者
suggest_research_collaborators(research_area="networking", keywords=["wireless", "5G"])
# 检查所有佐治亚理工学院系统的健康状态
check_system_health()
在更复杂的场景中,你可以组合使用多个工具,以实现更强大的功能。例如,结合课程搜索和教师研究匹配,为特定的研究领域找到合适的课程和教师。
# 为机器人研究找到相关课程和教师
courses = find_courses_for_research(research_topic="robotics", term_code="202502")
faculty = find_faculty_research(research_area="robotics")
print("相关课程:", courses)
print("相关教师:", faculty)
启动HTTP服务器:
./start_server_chatgpt.sh
服务器默认运行在http://0.0.0.0:8080。
配置ChatGPT:
http://localhost:8080GET / # 服务器信息和功能
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 # 法律信息和条款
get_available_semesters获取可用学期的列表。
get_subjects获取某个学期可用的学科/院系。
term_code(例如,“202502” 表示2025年春季)search_courses在指定学期和学科中搜索课程。
term_code:学期代码subject:学科代码(例如,“CS”、“MATH”)course_num(可选):课程编号过滤器title(可选):标题搜索过滤器get_course_details获取特定课程的详细信息。
term_code:学期代码crn:课程参考编号search_research_papers在佐治亚理工学院的研究知识库中搜索论文。
keywords:搜索关键词数组subject_areas:要过滤的学科领域date_from/date_until:日期范围过滤器max_results:返回的最大结果数find_faculty_research根据研究领域查找教师的研究资料。
research_area(例如,“机器人技术”、“人工智能”)analyze_research_trends分析关键词随时间的研究趋势。
keywords:要分析的关键词years:要分析的年数get_repository_info获取佐治亚理工学院研究知识库的信息。
search_campus_locations搜索校园建筑和地点。
query:建筑/地点名称的搜索查询services:所需的服务(例如,“视听设备”)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检查所有集成的佐治亚理工学院系统的健康状态。
服务器可以通过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
抓取器包含可配置的延迟和重试逻辑,以尊重佐治亚理工学院的OSCAR系统:
项目包含对所有集成系统的全面测试:
# 运行所有HTTP集成测试(38个测试)
python -m pytest tests/test_fastapi_server.py tests/test_external_server.py -v
# 运行FastAPI服务器测试(21个测试)
python -m pytest tests/test_fastapi_server.py -v
# 运行外部服务器测试(17个测试)
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
运行所有测试:
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
# 快速检查所有系统的健康状态
python -c "
from gtmcp.server_expanded import *
import asyncio
asyncio.run(main())
" --help
应用程序包含全面的错误处理:
所有错误都以适当的严重级别进行记录,并包含有助于调试的上下文信息。
佐治亚理工学院可能不会保留下学期之后的课程详细信息,即使旧学期会显示在下拉菜单中。请始终检查请求学期的课程是否实际可用。
⚠️ 重要提示
佐治亚理工学院可能不会保留下学期之后的课程详细信息,即使旧学期会显示在下拉菜单中。请始终检查请求学期的课程是否实际可用。
💡 使用建议
在使用过程中,可根据实际需求灵活配置
config.json文件,以优化服务器性能和功能。同时,定期运行测试脚本,确保系统的稳定性和可靠性。