KW 网页抓取工具 - 大学学生门户 MCP 服务器
  ](https://docker.com) 
革新学生支持体系一个智能的MCP(模型上下文协议)服务器,为AI助手提供安全访问大学学生门户的权限,用智能、响应迅速的聊天机器人取代传统办公人员。
🎯 愿景与使命
问题学生在访问大学办公室时常常会遇到:
- 工作人员态度粗鲁或不提供帮助
- 对他们的问题回答不完整
- 长时间的等待和官僚作风导致的延误
- 无法提供全天候服务
我们的解决方案一个开源的MCP服务器,使AI助手能够安全地访问学生门户数据,提供:
- 全天候24/7智能学生支持
- 全面的学术信息获取
- 一致且有帮助的回应
- 减轻行政负担
🚀 功能特点
核心功能
- 📊 学术数据提取完整的成绩单解析
- 📈 成绩点(GPA)与学分分析详细的学业进度跟踪
- 📋 课程历史按学期划分的课程明细
- 🎓 毕业要求自动学位进度监控
技术特点
- 🤖 MCP(微控制器协议/多点控制单元等,具体含义根据上下文确定)集成无缝AI助手连接
- 🐳 Docker 支持易于部署和扩展
- 📝 结构化数据为AI消费生成的干净JSON输出
📋 先决条件
- Python 3.12及以上版本
- Chrome/Chromium 浏览器
- ChromeDriver(通过Docker自动安装)
- 大学KLAS门户网站访问凭据
🛠️ 安装
选项1:Docker(推荐)
# Clone the repository
git clone https://github.com/yourusername/kw-scraper.git
cd kw-scraper
# Build and run with Docker Compose
docker-compose up -d
# Check service status
docker-compose ps选项2:本地安装
# Clone the repository
git clone https://github.com/yourusername/kw-scraper.git
cd kw-scraper
# Install dependencies using uv
pip install uv
uv sync
# Install ChromeDriver (macOS)
brew install chromedriver
# Install ChromeDriver (Ubuntu/Debian)
sudo apt-get install chromium-chromedriver⚙️ 配置
环境变量
创建一个 .env 项目根目录下的文件:
STUDENT_ID=your_student_id
STUDENT_PASSWORD=your_password服务配置
对于 systemd 服务(Linux):
# Copy service file
sudo cp kw-scraper.service /etc/systemd/system/
# Enable and start service
sudo systemctl enable kw-scraper
sudo systemctl start kw-scraper
# Check status
sudo systemctl status kw-scraper🚀 使用方法
MCP服务器模式
1. HTTP服务器模式
python server_http.py
# Server runs on http://localhost:8000/mcp2. 标准I/O模式(用于AI助手)
python server.py
# Communicates via stdin/stdoutAPI 端点
获取学生信息
POST /mcp/tools/login_and_get_student_info
Content-Type: application/json
{
"username": "student_id",
"password": "password"
}响应示例:
{
"student_info": {
"name": "최바딤",
"student_id": "2022203502",
"department": "소프트웨어학부 인공지능전공",
"academic_status": "4학년 재학",
"advisor": "이윤구",
"advisor_email": "yglee96@kw.ac.kr"
},
"academic_summary": {
"total_semesters": 7,
"total_courses": 45,
"credit_summary": {
"applied_credits": {
"major": 54,
"general_education": 49,
"total": 106
},
"earned_credits": {
"major": 54,
"general_education": 49,
"total": 106
}
},
"gpa_statistics": {
"calculated_gpa": 4.17,
"total_graded_courses": 35
}
},
"courses_by_semester": {
"2025_fall_semester": [
{
"course_code": "SWE4001",
"course_name": "소프트웨어공학",
"course_type": "major_required",
"credits": 3,
"grade": "A_plus"
}
]
}
}🏗️ 建筑学
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AI Assistant │◄──►│ MCP Server │◄──►│ KLAS Portal │
│ (Claude/GPT) │ │ (FastMCP) │ │ (Selenium) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Data Parser │
│ (StudentInfo) │
└─────────────────┘组件
KLASScraper.py网页自动化与登录处理StudentInfoParser.py学术数据解析与结构化server.py用于AI集成的Stdio MCP服务器server_http.py用于Web API的HTTP MCP服务器Dockerfile容器化部署配置
🔧 开发
项目结构
kw-scraper/
├── src/
│ ├── KLASScraper.py # Web scraping logic
│ ├── StudentInfoParser.py # Data parsing
│ └── __init__.py
├── data/
│ ├── student_info.json # Sample output
│ └── sungjuk_info_2025.pdf
├── server.py # Stdio MCP server
├── server_http.py # HTTP MCP server
├── Dockerfile # Container config
├── docker-compose.yml # Orchestration
├── kw-scraper.service # Systemd service
└── pyproject.toml # Dependencies运行测试
# Run the scraper locally
uv run python3 src/KLASScraper.py
# Test MCP server
uv run python3 server.py新增大学
- 创建特定于大学的抓取工具:
# src/UniversityScraper.py
class UniversityScraper:
def login(self, username, password):
# University-specific login logic
pass
def get_student_data(self):
# University-specific data extraction
pass- 更新MCP服务器:
# Add new tool to server.py
@mcp.tool(name="university_student_info")
def get_university_student_info(university: str, username: str, password: str):
# Route to appropriate scraper
pass🤝 贡献(或“参与贡献”)
我们欢迎投稿!以下是您可以提供帮助的方式:
对于开发者
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支:
git checkout -b feature/university-support - 添加你的大学为您的机构实现数据抓取器
- 彻底测试确保数据准确性和错误处理
- 提交拉取请求包括测试和文档
对于大学
- 联系我们 讨论整合
- 提供测试凭据 用于发展
- 分享反馈 关于数据准确性和特性
📊 支持的大学
| 大学名称 | 状态 | 门户 | 备注 |
|---|---|---|---|
| 康沃大学 | ✅ 活跃 | KLAS | 全面支持 |
| \[你的大学\] | 🚧 计划中 | \[门户\] | 即将推出 |
🐞 故障排除
常见问题
Chrome/ChromeDriver 问题
# Update ChromeDriver
pip install --upgrade selenium
# Or use Docker for consistent environment登录失败
- 验证凭据是否正确
- 检查大学门户网站是否可访问
- 确保ChromeDriver版本与Chrome版本相匹配
MCP连接问题
# Test MCP server
curl -X POST http://localhost:8000/mcp/tools/login_and_get_student_info \
-H "Content-Type: application/json" \
-d '{"username":"test","password":"test"}'📈 路线图
第一阶段:核心功能 ✅
- \[X\] KLAS门户集成
- \[X\] 学生数据提取
- \[X\] MCP服务器实现
- \[X\] Docker 部署
第二阶段:扩展🚧
- \[ \] 多校支持
- \[ \] 实时通知
- \[ \] 高级分析
- \[ \] 移动应用集成
📄 许可证
这个项目采用MIT许可证授权——详见 许可证 文件中有详细信息。
______________________________________________________________________
为全球学生倾心打造
*通过智能自动化转变大学支持方式*
