关于 jbnu-lms-student
jbnu-lms-student 是面向全北大学学生的本地只读 MCP 服务,可在 AI 客户端中汇总 LMS 通知、作业、截止日期和课程资料。它通过用户在浏览器中完成登录并在本机安全保存会话,提供带来源和原文链接的学业概览。
主要功能
- 01只读查询 LMS 信息
- 02汇总每日待办与每周计划
- 03查看通知、作业及提交状态
- 04查找并下载课程资料
- 05本机保存登录会话
- 06提供来源、时间与原文链接
适用场景
- 01查看当天需要处理的事项
- 02整理本周作业和截止日期
- 03发现新通知或课程资料变更
- 04核实作业是否最终提交
MCP 相关
通过本地 STDIO MCP 服务向 AI 客户端提供 25 个 LMS 查询工具。LMS 功能为只读,用户在浏览器中完成认证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
전북대 LMS 학업비서
공지부터 과제 마감, 제출 상태, 수업자료까지.
학생이 지금 해야 할 일을 먼저 보여 주는 비공식 로컬 MCP입니다.
읽기 전용 LMS · 패스키 지원 · Windows + macOS · 25개 도구 · 사용자 승인 피드백
비공식 학생 도구: 전북대학교가 운영하거나 보증하는 공식 서비스가 아닙니다. 학교 명칭과 UI 자산의 권리는 전북대학교에 있으며, 공개 배포 전에는 공식 UI 사용 지침을 확인해야 합니다.
전북대학교 LMS(JBNU LXP, https://lms.jbnu.ac.kr)에 로그인한 학생이 Claude Desktop·Codex 같은 AI 클라이언트에서 "오늘 해야 할 일 알려줘", "이번 주 과제와 마감일 정리해줘", "새로 올라온 공지 알려줘" 처럼 물어볼 수 있게 해 주는 로컬 STDIO MCP 서버입니다. 모든 LMS 기능은 조회 전용이며, 로그인은 사용자가 브라우저에서 직접(패스키·2차 인증 포함) 완료합니다.
한눈에 보는 경험
| 묻는 말 | 먼저 받는 답 |
|---|---|
| 오늘 뭐 해야 해? | 놓치면 안 되는 일 최대 3개와 근거 |
| 이번 주 일정 짜줘 | 제출 상태·남은 시간 기준 학습 계획 |
| 뭐가 새로 올라왔어? | 마지막 확인 이후 공지·과제·자료 변경점 |
| 이 과제 뭐 내야 해? | 요구사항·제출물·주의사항과 원문 링크 |
| 놓친 것 있나? | 마감·공지·과제 변경을 합친 학생 확인함과 상위 행동 3개 |
| 이거 최종 제출됐어? | 과제 상세 화면을 다시 읽은 제출 판정·근거·주의사항 |
- 비밀번호·패스키·인증 코드를 절대 입력받지 않습니다.
- LMS 세션은 Windows DPAPI 또는 macOS Keychain으로 내 PC에만 보관합니다.
- LMS 데이터와 인증정보는
lms.jbnu.ac.kr이외로 전송하지 않습니다. 문제 신고·기능 제안은 사용자가 전송 내용을 확인하고 승인한 경우에만 로컬 보관함 또는 설정된 HTTPS 수집기로 접수합니다.
1. 가장 쉬운 설치 (Windows / macOS)
준비물은 Node.js 22 이상과 Chrome 또는 Edge입니다. 폴더를 만들거나 소스 코드를 내려받을 필요가 없습니다.
Codex
Windows는 PowerShell, Mac은 터미널에 아래 한 줄을 붙여넣습니다.
npx -y jbnu-lms-mcp@latest setup --client codex
Claude Desktop
npx -y jbnu-lms-mcp@latest setup --client claude
명령이 환경을 점검하고 기존 설정을 백업한 뒤 MCP를 등록하고 로그인 창을 엽니다. 전북대 아이디·비밀번호·패스키·2차 인증은 브라우저에서 직접 완료합니다. 실제 LMS 홈에 수강 과목이 보이면 Windows는 창을 그대로 두고, Mac은 방금 열린 로그인용 Chrome/Edge 창만 닫습니다. 완료 메시지가 나오면 Codex 또는 Claude Desktop을 완전히 종료했다가 다시 실행하면 됩니다.
Claude Desktop에서는 GitHub Release의 .mcpb 설치 파일도 사용할 수 있습니다. 개발자용 소스 설치와 수동 설정은 설치 안내서에 분리했습니다.
2. 첫 사용
Claude 에서 이렇게 물어보세요.
오늘 해야 할 일 알려줘
처음이면 도구가 자동 제어가 없는 로그인용 일반 브라우저 창을 LMS /my/에서 엽니다.
LMS 로그인 페이지가 만든 공식 리다이렉트로 통합로그인에 들어간 뒤,
세 번째 아이디 로그인 탭을 선택해 아이디·비밀번호로 1차 인증한 뒤, 다음 2차 인증 화면에서 패스키를 선택하세요.
실제 수강 과목이 보이는 LMS 화면에 도착하면 Windows는 창을 그대로 두고, Mac은 방금 열린 로그인용 Chrome/Edge 창만 닫습니다. 도구가 LMS 쿠키만 읽어
검증하고, 원래 질문을 이어서 처리합니다. 두 번째 패스키 인증 로그인 탭의 비밀번호 없는 단독 로그인과는
다른 경로입니다. 인증이 끝나면 LMS 세션은 Windows DPAPI 또는 macOS Keychain에 저장하고, 전용 브라우저에는 LMS 쿠키만 남겨 원문 보기에 재사용합니다.
비밀번호·자동완성·방문 기록·SSO 쿠키·사이트 저장소·캐시는 자동 정리합니다. 패스키 인증에 필요한 팝업은 이 전용 창에서만 허용됩니다.
로그인만 다시 할 수도 있습니다.
npx -y jbnu-lms-mcp@latest login
3. 이런 질문에 답합니다
| 질문 | 사용하는 도구 |
|---|---|
| 오늘 해야 할 일 알려줘 | get_daily_briefing |
| 놓친 것 있나? 중요한 것만 보여줘 | get_attention_inbox |
| 이번 주 과제와 마감일 정리해줘 | get_weekly_study_plan, get_upcoming_deadlines |
| 새로 올라온 공지사항 알려줘 | get_announcements(only_new), get_recent_changes |
| 이 공지/과제 원문 열어줘 | open_lms_source |
| 이 과제 요구사항과 제출물을 분석해줘 | get_assignment_detail |
| 이 과제가 최종 제출됐는지 다시 확인해줘 | check_assignment_submission |
| 캘린더에 넣을 확정 일정만 찾아줘 | get_calendar_sync_candidates |
| 이번 주차 수업자료를 찾아줘 | get_course_materials(week) |
| 지난번 확인 이후 변경된 내용만 보여줘 | get_recent_changes |
| 그 파일 내려받아 줘 | download_course_material |
| 이 오류를 개발자에게 신고해줘 | get_feedback_status, report_lms_problem |
| 이런 기능을 추가해달라고 제안해줘 | get_feedback_status, suggest_lms_feature |
| 전송 못 한 신고를 다시 보내줘 | retry_feedback_delivery |
| 내 로컬 신고 기록을 지워줘 | discard_local_feedback |
전체 도구 25개의 입력·출력은 docs/05-tool-spec.md 에 있습니다.
응답에는 항상 기준 시각(Asia/Seoul), 로그인 상태, 마지막 동기화 시각, 데이터 출처(Moodle API / 웹 AJAX / LMS 화면 해석 / AI 추정)와 원문 URL 이 붙습니다. 실패하면 영향 범위·자동 복구·바로 실행할 다음 행동·비식별 진단 ID를 함께 안내하며, 일부 강좌만 실패한 결과는 완전한 빈 결과와 구분합니다. 과제는 마감·남은 시간·제출 상태·지각 허용 여부를, 공지는 📌 고정(중요)·🆕 새 글·📎 첨부 여부를 표시합니다. 자료를 다시 내려받으면 SHA-256으로 같은 파일인지 확인해 중복 복사본을 만들지 않습니다.
4. 认证方式概要
全北大学 LMS 仅支持统一认证(SSO)。移动 Web 服务本身虽已启用,但登录类型为应用内凭据方式(typeoflogin=1),浏览器 SSO 令牌签发路径(launch.php)尚未启用。为避免绕过双重认证或将密码传递给工具,本工具采用浏览器会话方式(调查依据:docs/03-auth-decision-record.md)。
因此,本工具的工作方式如下:
- 使用专用应用浏览器配置文件打开 Chrome/Edge 窗口,由用户直接完成 SSO·通行密钥认证
- 仅从已登录的配置文件中提取 LMS 会话 Cookie 和
sesskey,并保存到 Windows DPAPI 或 macOS Keychain - 登录成功后,清除 LMS 以外的 Cookie、密码、自动填充数据、浏览记录、站点存储和缓存,并仅保留由 Chrome 使用用户账户加密的 LMS Cookie,以供查看原始内容
- 后续查询通过 Moodle Web AJAX API 和 LMS 页面解析完成,无需浏览器
- 获取到官方令牌后(学校政策变更时),自动优先使用官方 REST API
登录窗口有两种模式。
| 模式 | 说明 | 设置 |
|---|---|---|
plain(默认) | 完全不含自动化的一般浏览器。Windows 会检测 LMS 首页并关闭专用窗口;Mac 则由用户关闭仅用于登录的窗口后验证并保存会话 | JBNU_LMS_LOGIN_MODE=plain |
assisted(实验性) | 使用 Playwright 检测登录完成状态。SSO 可能会将其判定为开发者工具,因此不建议使用 | JBNU_LMS_LOGIN_MODE=assisted |
为方便使用,服务器运行期间每 20 分钟延长一次会话(keep-alive)。如需关闭,请设置 JBNU_LMS_KEEPALIVE=0。
5. 命令行工具
npx -y jbnu-lms-mcp@latest setup --client codex # Codex 등록 + 로그인
npx -y jbnu-lms-mcp@latest setup --client claude # Claude 등록 + 로그인
npx -y jbnu-lms-mcp@latest login # 브라우저 로그인
npx -y jbnu-lms-mcp@latest status --verify # 연결 상태
npx -y jbnu-lms-mcp@latest logout # 세션 삭제
npx -y jbnu-lms-mcp@latest doctor # 환경 점검
6. 环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
JBNU_LMS_BASE_URL | https://lms.jbnu.ac.kr | LMS 地址 |
JBNU_LMS_DATA_DIR | Windows:%LOCALAPPDATA%\jbnu-lms-mcp / Mac:~/.jbnu-lms-mcp | 配置文件·快照文件夹。Mac 会话正文保存在 Keychain 中 |
JBNU_LMS_BROWSER | 自动(Chrome→Edge) | chrome、msedge 或可执行文件路径 |
JBNU_LMS_RETAIN_BROWSER_PROFILE | 1 | 保留用于查看原始内容的 LMS 专用配置文件。设为 0 时,登录成功后立即删除 |
JBNU_LMS_LOGIN_MODE | plain | 建议使用 plain,assisted 为实验性模式 |
JBNU_LMS_AUTO_LOGIN | 1 | 会话过期时自动打开登录窗口 |
JBNU_LMS_AUTO_LOGIN_WAIT_SEC | 90 | 自动登录等待时间 |
JBNU_LMS_KEEPALIVE / JBNU_LMS_KEEPALIVE_MIN | 1 / 20 | 是否启用会话延长 / 间隔(分钟) |
JBNU_LMS_DOWNLOAD_DIR | ~/Downloads/jbnu-lms | 资料保存文件夹 |
JBNU_LMS_TIMEOUT_MS | 20000 | 请求超时时间 |
JBNU_LMS_MIN_INTERVAL_MS / JBNU_LMS_MAX_CONCURRENCY | 250 / 3 | 请求速率限制 |
JBNU_LMS_LOG_LEVEL | warn | silent error warn info debug(stderr) |
JBNU_LMS_FEEDBACK_URL | 无 | 用于立即发送问题报告·功能建议的 HTTPS webhook。未设置时在本地接收 |
JBNU_LMS_FEEDBACK_TOKEN | 无 | 可选的 webhook Bearer 令牌。不会保存到响应·日志·报告中 |
JBNU_LMS_FEEDBACK_TIMEOUT_MS | 8000 | 反馈远程发送超时时间 |
7. 开发
npm install
npm run build
npm test # 단위·통합·보안 테스트 (mock LMS)
npm run test:security # 보안 테스트만
npm run check:secrets # 저장소에 토큰·쿠키가 없는지 검사
JBNU_LIVE=1 npm run test:live # 실제 LMS 스모크 (로그인 필요)
文档:需求 · 威胁模型 · 认证决策记录 · 结构与数据流 · 工具规范 · 安装指南 · 故障排除 · 发布检查清单 · 实际 LMS 验证 · 扩展路线图 · 错误·恢复 UX 约定 · 解析器兼容性 · 多平台分发 · 反馈收集约定 · 品牌·展示政策 · 日历同步 UX · 学生可靠性工作流
8. 安全须知
- 能够登录这台 PC 的人都可以使用已保存的 LMS 会话。在公用 PC 上使用后,请运行
disconnect_lms。 - Windows 会话文件(
session.dpapi)和用于查看原始内容的配置文件已通过.gitignore排除,切勿分享。Mac 会话保存在登录 Keychain 中。专用配置文件仅保留 LMS Cookie,并自动清理浏览记录·SSO Cookie·凭据数据。 - 日志(stderr)会进行脱敏处理,避免记录令牌·Cookie·密码·作业正文。
- 不会自动发送问题报告·功能建议。必须先确认提交内容和收集位置,再予以批准;远程传输数据的删除·保留政策适用于收集服务器运营方。
- 尚未实现会更改状态的功能(提交作业、发帖、发送消息)。扩展计划请参阅 docs/10-roadmap-extensions.md。
许可证:MIT。这是与全北大学·UbiOn 无关的非官方工具,请遵守 LMS 使用条款和学校政策。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。