CAU e-class MCP
Enables Claude to access Chung-Ang University's e-class platform, including dashboard, daily briefing, course details, VOD links, and smart file download.
README
🎓 CAU e-class MCP
브라우저 없이 Claude에서 바로 중앙대 e-class를 확인하세요!
공지사항, 과제, 강의자료를 Claude와 대화하면서 확인할 수 있는 MCP 서버입니다.
⚠️ 학생이 만든 비공식 도구입니다. 중앙대학교와 무관하며, 사용에 따른 책임은 본인에게 있습니다.
✨ 이런 걸 할 수 있어요
| 기능 | 설명 |
|---|---|
| 📋 대시보드 | 수강 중인 전체 과목 한눈에 보기 |
| 📅 데일리 브리핑 | 오늘 할 일, 쪽지, 공지사항을 한 번에 요약 |
| 📝 통합 상세 조회 | 과목별 강의(출석 포함), 과제, 자료실 정보 조회 |
| 🎥 VOD 직링크 | 동영상 강의의 실제 스트리밍 주소 추출 |
| 📂 지능형 다운로드 | 파일명 변경 및 과목별 폴더 자동 관리 다운로드 |
| 🌐 Web UI | 브라우저에서 인증 설정 + 서버 모니터링 |
🚀 시작하기
필요한 것
- Python 3.10 이상
- 중앙대 포탈 계정 (학번 + 비밀번호)
- Claude Code (설치 링크)
Step 1: 설치
방법 A) GitHub에서 바로 설치 (가장 간단)
pip install git+https://github.com/legendwon/cau-eclass-mcp.git
방법 B) 직접 클론해서 설치 (개발용)
git clone https://github.com/legendwon/cau-eclass-mcp.git
cd cau-eclass-mcp
pip install -e .
💡 venv를 쓰고 있다면? 반드시 해당 venv의 pip으로 설치하세요:
# Windows .\venv\Scripts\pip.exe install -e . # macOS/Linux ./venv/bin/pip install -e .
Step 2: 인증 설정
최초 1회만 하면 됩니다. 3가지 방법 중 편한 걸 골라주세요:
🔐 방법 1: OS 키링에 저장 (추천)
가장 안전합니다. 비밀번호가 운영체제의 보안 저장소에 암호화되어 저장돼요.
python -c "from cau_eclass_mcp.utils.credentials import CredentialManager; m = CredentialManager(); m.prompt_for_credentials()"
학번과 비밀번호를 입력하면 끝!
- Windows → 자격 증명 관리자
- macOS → 키체인
- Linux → GNOME Keyring / KWallet
🌐 방법 2: Web UI에서 설정
터미널이 불편하다면 웹 브라우저에서도 설정할 수 있어요:
python -m cau_eclass_mcp --sse
브라우저에서 http://localhost:8000 을 열고, 학번/비밀번호를 입력하면 됩니다.
⚡ 방법 3: 환경변수
임시로 쓰거나 CI/CD에서 유용합니다:
# Windows (PowerShell)
$env:CAU_USERNAME="학번"
$env:CAU_PASSWORD="비밀번호"
# macOS/Linux
export CAU_USERNAME="학번"
export CAU_PASSWORD="비밀번호"
🤷 방법 4: 그냥 실행하기
아무 설정 안 해도 첫 실행 시 자동으로 물어봅니다!
Step 3: Claude Code에 연결
Claude Code가 이 MCP 서버를 인식하도록 설정 파일을 추가해주세요.
모든 프로젝트에서 쓰고 싶다면 → ~/.claude/claude.json 편집:
{
"mcpServers": {
"cau-eclass": {
"command": "python",
"args": ["-m", "cau_eclass_mcp"]
}
}
}
Windows 경로:
C:\Users\사용자이름\.claude\claude.json
특정 프로젝트에서만 쓰고 싶다면 → 프로젝트 루트에 .mcp.json 생성:
{
"mcpServers": {
"cau-eclass": {
"type": "stdio",
"command": "python",
"args": ["-m", "cau_eclass_mcp"]
}
}
}
💡 venv를 쓰고 있다면?
"command"를 venv의 python 경로로 바꿔주세요:{ "mcpServers": { "cau-eclass": { "type": "stdio", "command": "D:\\경로\\cau-eclass-mcp\\venv\\Scripts\\python.exe", "args": ["-m", "cau_eclass_mcp"], "cwd": "D:\\경로\\cau-eclass-mcp", "env": { "PYTHONPATH": "D:\\경로\\cau-eclass-mcp\\src" } } } }
설정 후 Claude Code를 재시작하면 끝!
💬 사용법
Claude Code에서 자연스럽게 말하면 됩니다:
나: "e-class 오늘 무슨 일 있어?"
Claude: [오늘 마감인 과제, 읽지 않은 쪽지, 최신 공지사항 요약 표시]
나: "운체보 이번 주 강의 목록 보여줘"
Claude: [주차별 강의 목록 + 동영상 시청 완료 여부 표시]
나: "인공지능 과제 확인해줘"
Claude: [과제 목록 + 마감일 + 제출 상태 표시]
나: "1주차 강의안 다운로드해줘"
Claude: [파일명을 '1주차_강의안.pdf'로 바꾸고 '운체보' 폴더에 저장]
나: "강의 영상 링크 추출해줘"
Claude: [동영상 직링크와 화질별 URL 제공]
🌐 Web UI 모드 (SSE)
터미널 대신 브라우저에서 쓰고 싶다면 SSE 모드로 실행하세요:
# 기본 실행 (http://localhost:8000)
python -m cau_eclass_mcp --sse
# 포트 변경
python -m cau_eclass_mcp --sse --port 9000
브라우저에서 http://localhost:8000 을 열면:
- 인증 설정 — 학번/비밀번호 등록, 확인, 삭제
- 서버 상태 — 실시간 모니터링, 인증 상태, 가동 시간
- API 문서 — http://localhost:8000/docs 에서 Swagger UI 확인
종료하려면 터미널에서 Ctrl+C
🔧 MCP 도구 목록
Claude Code에서 자동으로 사용되는 도구들입니다:
| 도구 | 설명 | 파라미터 |
|---|---|---|
get_dashboard |
전체 수강 과목 조회 | 없음 |
get_daily_briefing |
(추천) 통합 데일리 브리핑 | 없음 |
get_course_details |
강의/과제/자료실 상세 조회 | course_id, content_type ('weekly', 'assignments', 'files') |
download_file |
스마트 파일 다운로드 | course_id, file_id, save_path |
get_vod_info |
동영상 스트리밍 링크 추출 | content_id |
🏗️ 기술 구조
CAU-ON & LearningX 통합
중앙대는 Canvas 기반의 CAU-ON과 동영상/출석 관리를 위한 LearningX를 혼합하여 사용합니다. 본 MCP 서버는 이 두 시스템의 데이터를 통합하여 제공합니다.
- CAU SSO 포탈에서 RSA 암호화로 로그인
- API가 활성화된 세션 쿠키 및 JWT 토큰 획득
- Canvas API 및 LearningX API (
xn_api_token) 통합 요청 - OCS XML 파싱을 통한 VOD 스트리밍 주소 추출
인증 흐름
학번/비밀번호 입력 → SSO 로그인 → RSA 비밀번호 암호화 → Canvas 세션
→ API 활성 쿠키 획득 → CAU-ON API 요청
- 서버가 제공하는 RSA 개인키로 클라이언트 측 암호화 (특이한 구조!)
- PKCS1v15 패딩
- HTTP/2 필수
Referer헤더가 세션 업그레이드에 필수- 세션 쿠키: 208자 (기본) → 421자 (API 활성)
❓ 문제 해결
"Failed to authenticate with CAU SSO"
- 학번/비밀번호가 맞는지 확인
- Web UI에서 다시 설정: http://localhost:8000 (SSE 모드)
- 또는 기존 인증 정보 삭제 후 재등록:
python -c "from cau_eclass_mcp.utils.credentials import CredentialManager; m = CredentialManager(); m.delete_credentials()"
"Keyring not available"
키링이 안 되면 환경변수를 사용하세요:
$env:CAU_USERNAME="학번"
$env:CAU_PASSWORD="비밀번호"
MCP 서버가 응답하지 않을 때
- 직접 실행해서 에러 확인:
python -m cau_eclass_mcp # stdio 모드 python -m cau_eclass_mcp --sse # SSE 모드 - Claude Code 로그 확인
.mcp.json또는claude.json설정 확인
세션 만료 에러
세션은 30분 동안 캐시되며, 만료 시 자동으로 재로그인됩니다. 그래도 에러가 나면 Claude Code를 재시작하세요.
🛠️ 개발 참여
테스트 실행
pip install -e .[dev]
pytest tests/ -v
코드 포맷팅
black src/ tests/
ruff check src/ tests/
기여하기
- 이 repository를 Fork
- 기능 브랜치 생성 (
git checkout -b feature/멋진기능) - 커밋 (
git commit -m '멋진 기능 추가') - 푸시 (
git push origin feature/멋진기능) - Pull Request 생성
🔒 보안
- 비밀번호는 OS 키링에 암호화 저장
- 비밀번호를 절대 Git에 커밋하지 마세요
- 보안 이슈 발견 시 GitHub Issues로 알려주세요
📄 라이선스
MIT License — LICENSE 파일 참고
🙏 감사
- Model Context Protocol (MCP)
- Claude Code
- 13시간의 CAU-ON API 디버깅에서 탄생 🐛
궁금한 점이나 버그는? → GitHub Issues에 남겨주세요!
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。