student_support_mcp_server

ChoiVadim/student_support_mcp_server

3.2

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.

Tools
1
Resources
0
Prompts
0

KW Scraper - University Student Portal MCP Server

Python MCP Docker

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 handling
  • StudentInfoParser.py: Academic data parsing and structuring
  • server.py: Stdio MCP server for AI integration
  • server_http.py: HTTP MCP server for web APIs
  • Dockerfile: 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

  1. 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
    
  2. 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

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/university-support
  3. Add your university: Implement scraper for your institution
  4. Test thoroughly: Ensure data accuracy and error handling
  5. 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

UniversityStatusPortalNotes
Kwangwoon University✅ ActiveKLASFull 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