ChoiVadim/student_support_mcp_server
If you are the rightful owner of student_support_mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
KW Scraper is an MCP server designed to provide AI assistants with secure access to university student portals, enhancing student support through intelligent automation.
KW Scraper - University Student Portal MCP Server
Revolutionizing Student Support: An intelligent MCP (Model Context Protocol) server that provides AI assistants with secure access to university student portals, replacing traditional office staff with smart, responsive chatbots.
🎯 Vision & Mission
The Problem: Students visiting university offices often face:
- Rude or unhelpful responses from staff
- Incomplete answers to their questions
- Long wait times and bureaucratic delays
- Lack of 24/7 availability
Our Solution: An open-source MCP server that enables AI assistants to access student portal data securely, providing:
- 24/7 intelligent student support
- Comprehensive academic information access
- Consistent, helpful responses
- Reduced administrative burden
🚀 Features
Core Functionality
- 📊 Academic Data Extraction: Complete student transcript parsing
- 📈 GPA & Credit Analysis: Detailed academic progress tracking
- 📋 Course History: Semester-by-semester course breakdown
- 🎓 Graduation Requirements: Automated degree progress monitoring
Technical Features
- 🤖 MCP Integration: Seamless AI assistant connectivity
- 🐳 Docker Support: Easy deployment and scaling
- 📝 Structured Data: Clean JSON output for AI consumption
📋 Prerequisites
- Python 3.12+
- Chrome/Chromium browser
- ChromeDriver (automatically installed via Docker)
- University KLAS portal access credentials
🛠️ Installation
Option 1: Docker (Recommended)
# 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
Option 2: Local Installation
# 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
⚙️ Configuration
Environment Variables
Create a .env file in the project root:
STUDENT_ID=your_student_id
STUDENT_PASSWORD=your_password
Service Configuration
For systemd service (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
🚀 Usage
MCP Server Modes
1. HTTP Server Mode
python server_http.py
# Server runs on http://localhost:8000/mcp
2. Stdio Mode (for AI assistants)
python server.py
# Communicates via stdin/stdout
API Endpoints
Get Student Information
POST /mcp/tools/login_and_get_student_info
Content-Type: application/json
{
"username": "student_id",
"password": "password"
}
Response Example:
{
"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"
}
]
}
}
🏗️ Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AI Assistant │◄──►│ MCP Server │◄──►│ KLAS Portal │
│ (Claude/GPT) │ │ (FastMCP) │ │ (Selenium) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Data Parser │
│ (StudentInfo) │
└─────────────────┘
Components
KLASScraper.py: Web automation and login handlingStudentInfoParser.py: Academic data parsing and structuringserver.py: Stdio MCP server for AI integrationserver_http.py: HTTP MCP server for web APIsDockerfile: Containerized deployment configuration
🔧 Development
Project Structure
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
Running Tests
# Run the scraper locally
uv run python3 src/KLASScraper.py
# Test MCP server
uv run python3 server.py
Adding New Universities
-
Create University-Specific Scraper:
# 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 -
Update MCP Server:
# 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
🤝 Contributing
We welcome contributions! Here's how you can help:
For Developers
- Fork the repository
- Create a feature branch:
git checkout -b feature/university-support - Add your university: Implement scraper for your institution
- Test thoroughly: Ensure data accuracy and error handling
- Submit a pull request: Include tests and documentation
For Universities
- Contact us to discuss integration
- Provide test credentials for development
- Share feedback on data accuracy and features
📊 Supported Universities
| University | Status | Portal | Notes |
|---|---|---|---|
| Kwangwoon University | ✅ Active | KLAS | Full support |
| [Your University] | 🚧 Planned | [Portal] | Coming soon |
🐛 Troubleshooting
Common Issues
Chrome/ChromeDriver Issues
# Update ChromeDriver
pip install --upgrade selenium
# Or use Docker for consistent environment
Login Failures
- Verify credentials are correct
- Check if university portal is accessible
- Ensure ChromeDriver version matches Chrome version
MCP Connection Issues
# 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"}'
📈 Roadmap
Phase 1: Core Features ✅
- KLAS portal integration
- Student data extraction
- MCP server implementation
- Docker deployment
Phase 2: Expansion 🚧
- Multi-university support
- Real-time notifications
- Advanced analytics
- Mobile app integration
📄 License
This project is licensed under the MIT License - see the file for details.
Made with ❤️ for students worldwide
Transforming university support through intelligent automation