Skip to main content
Glama
README.md
# KLAX (klax)

> **광운대학교 학사관리시스템(KLAS) Model Context Protocol (MCP) 서버 & 학업 보조 CLI**  
> Claude Desktop, Claude Code, Codex, Cursor 등 AI 에이전트에 광운대 학사 일정 및 강의자료 인텔리전스를 연결합니다.

---

## ⚠️ 중요한 면책 고지 (Disclaimer)

1. **비공식 오픈소스 프로젝트**: 본 프로젝트는 광운대학교 공식 소프트웨어가 아니며, 학생 개인의 학업 생산성 향상을 위해 개발된 비공식 오픈소스 학업 비서입니다.
2. **학칙 및 윤리 준수 (Strict Academic Integrity)**: 
   - **자동 출석, 매크로 조작, 동영상 자동 재생 기능이 일절 포함되어 있지 않습니다.**
   - **교수 저작물(강의 영상)의 무단 복제/다운로드 기능을 제공하지 않습니다.**
   - 시험 공정성을 해치는 행위(시험 힌트 추출, 부정행위)와 관련된 로직이 완전히 배제되어 있습니다.
3. **Local-First & 개인정보 보호**:
   - 학생 자격증명(학번, 비밀번호)은 오직 로컬 머신의 **OS 키체인(macOS Keychain / Windows Credential Manager)**에만 암호화되어 보관됩니다.
   - 모든 교안 색인 및 퀴즈/노트 데이터는 로컬 SQLite(`~/.klax/`)에만 저장되며, 외부 서버로 전송되지 않습니다.

---

## ⚡ 주요 기능

### 1. 학사 일정 & 학업 대시보드
- **종합 현황 요약 (`klax_get_overview`)**: 수강 과목 수, 마감 임박 과제, 미수강 동영상 강의 진도율 종합 진단.
- **마감 일정 관리 (`klax_get_deadlines`)**: 과목별 과제 제출 마감 일시 및 제출 여부 조회.
- **수업시간표 & 캘린더 생성 (`klax_get_timetable`)**: 개인 시간표(요일/교시/강의실) 조회 및 표준 iCal(`.ics`) 파일 생성.
- **일일 학업 브리핑 (`klax_get_daily_briefing`)**: 오늘/내일 수업 시간표, D-Day 임박 과제, 출결 위험도를 종합한 마크다운 리포트.
- **강의계획서 & 학점 시뮬레이터 (`klax_get_syllabus`, `klax_simulate_grade`)**: 평가 비율 분석 및 목표 학점(A+) 달성에 필요한 잔여 평가 최저 점수 역산.

### 2. 강의자료 로컬 인텔리전스 (Local-First FTS)
- **자료실 첨부파일 수집 (`klax_list_materials`, `klax_download_material`)**: 강의계획서 및 자료실 파일을 로컬에 안전하게 다운로드.
- **슬라이드 단위 정확한 색인 (`klax_index_learning_material`)**: PDF/PPTX 교안을 페이지/슬라이드 단위로 분해하여 로컬 SQLite FTS5에 색인.
- **출처 기반 인용 검색 (`klax_search_learning_materials`)**: 검색어와 관련된 교안의 정확한 위치(`page:N`, `slide:N`) 및 원문 발췌문 조회.
- **교안 외부 링크 & 맥락 분석 (`klax_extract_pdf_links`, `klax_analyze_material_links`)**: 교안 속 웹 링크를 추출하고 슬라이드 전후 문맥과 웹페이지 핵심을 분석해 실전 학습 활용법 도출.

### 3. AI 적응형 학습 & 독자적 학습 노트
- **과제 요구사항 분해 (`klax_build_assignment_checklist`, `klax_link_assignment_to_materials`)**: 과제 지문에서 필수 구현 요구사항을 추출하고 관련 교안 슬라이드를 자동 매핑.
- **소크라테스식 개념 튜터 (`klax_tutor_concept`)**: 점진적 힌트 사다리(Hint Ladder, 1~3단계)로 학생 스스로 개념을 떠올리도록 유도.
- **자가 진단 퀴즈 & 에빙하우스 복습 큐 (`klax_generate_quiz`, `klax_submit_quiz_answer`, `klax_get_review_queue`)**: 교안 원문 기반 객관식 퀴즈 생성 및 망각곡선 주기 복습 스케줄러.
- **단일 HTML 학습 노트 생성 (`klax_write_study_note_html`)**: 모델이 작성한 구조화 노트를 원문 locator 전수 검증 후 브라우저에서 바로 읽는 단일 HTML 파일로 렌더링.

### MCP 도구 이름

등록되는 도구는 모두 `klax_*` 네임스페이스를 사용합니다.

```text
klax_get_overview
klax_list_courses
klax_get_deadlines
klax_get_lecture_progress
klax_list_materials
klax_download_material
klax_auth_status
klax_refresh_session
klax_get_timetable
klax_get_syllabus
klax_get_attendance_status
klax_get_assignment_feedback
klax_get_daily_briefing
klax_simulate_grade
klax_search_course_materials
klax_list_learning_materials
klax_index_learning_material
klax_search_learning_materials
klax_get_video_transcript
klax_get_learning_excerpt
klax_build_assignment_checklist
klax_generate_quiz
klax_submit_quiz_answer
klax_get_review_queue
klax_get_study_plan
klax_link_assignment_to_materials
klax_tutor_concept
klax_extract_pdf_links
klax_analyze_material_links
klax_write_study_note_html
klax_generate_study_guide_html
```

`klax_get_timetable`은 기본적으로 구조화된 시간표만 반환합니다. iCal 텍스트가 필요할 때만
`generate_ics=true`를 지정하세요. 원본 진단 payload는 지원되는 조회 도구에서
`verbose=true`를 지정한 경우에만 포함됩니다.

---

## 🛠️ 설치 및 설정

Python 3.10 이상이 필요합니다.

### 1. 저장소 클론 및 패키지 설치

```bash
git clone https://github.com/goonbam0306/klax.git
cd klax

python3 -m venv .venv
source .venv/bin/activate  # Windows: .\.venv\Scripts\Activate.ps1
pip install -e ".[materials]"
```

### 2. 초기 런타임 설정

```bash
# 세션 브리지용 헤드리스 Chromium 설치
klax setup

# KLAS 학번 및 비밀번호 저장 (OS 키체인 안전 보관)
klax configure

# 진단 도구 실행
klax doctor
```

### 3. AI 클라이언트에 원클릭 등록

#### Claude Code / Codex 자동 등록
```bash
klax install --all
# 또는 개별 등록
klax install --claude
klax install --codex
```

#### Claude Desktop 수동 설정 (`claude_desktop_config.json`)
```json
{
  "mcpServers": {
    "klax": {
      "command": "/path/to/klax/.venv/bin/python",
      "args": ["-m", "klax.server"]
    }
  }
}
```

---

## 🔒 보안 및 개인정보 수칙

- `klax`는 비밀번호를 평문으로 저장하지 않으며, OS Secure Enclave / Keyring을 최우선 사용합니다.
- 학생 본인의 KLAS 계정 정보는 외부 클라우드, 원격 API, 분석 서버로 일절 전송되지 않습니다.
- 로컬 SQLite 데이터베이스(`~/.klax/`)는 소유자 전용 권한(`0700`, `0600`)으로 보호됩니다.

---

## 📄 라이선스

본 프로젝트는 [MIT License](LICENSE)에 따라 자유롭게 사용, 수정, 배포할 수 있습니다.

TDQS

B3.4/5.0

Scored across 31 tools

Disambiguation3/5

Most tools target a distinct resource and action, but there are several closely related pairs such as extract_pdf_links vs analyze_material_links, list_materials vs list_learning_materials, and search_course_materials vs search_learning_materials. The detailed descriptions help clarify boundaries, but an agent could still easily misselect among the overlapping material, search, and summary tools.

Naming Consistency4/5

The klax_ prefix and verb_noun style are applied consistently across nearly all tools, such as list_courses, get_deadlines, download_material, and generate_quiz. Minor exceptions like klax_auth_status and klax_tutor_concept deviate from the strict verb-first pattern, but the overall naming scheme remains predictable.

Tool Count2/5

With 31 tools, the server is above the 25-tool threshold and feels heavy for a single MCP. Several tools are variations on material handling, searching, and summary generation, so the set could likely be consolidated without losing core functionality.

Completeness4/5

The tool set covers the main KLAS workflows—courses, deadlines, attendance, timetable, syllabus, and materials—plus a coherent local study loop of downloading, indexing, searching, quizzing, reviewing, and generating study plans. Minor lifecycle gaps exist, such as no unindex/delete for local materials and no listing of generated quizzes or notes, but agents can generally work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues