LMS作业探索与课程计划解析MCP服务器

该服务是一款基于MCP协议的服务器,通过浏览器自动化技术自动探索LMS中的作业和课程计划,为AI代理提供结构化的上下文信息,适用于学生和开发者高效管理学术任务。

  • by TaeTaeJin
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 taejinchoi-cbnu/LMSMCP

使用说明

📚 LMS MCP (Model Context Protocol)

대학 LMS(Moodle/Canvas 등)의 과제를 자동으로 탐색하고 강의계획서를 파싱하여 AI 에이전트의 컨텍스트(Context)로 만들어주는 강력한 MCP 서버입니다.

이 프로젝트는 브라우저 자동화(Playwright) 기술을 활용하여 LMS의 복잡한 구조(팝업, 다중 페이지 iFrame 등)를 뚫고, 완벽하게 정제된 마크다운 데이터만 에이전트에게 제공합니다.


🚀 주요 기능 (Features)

  • 과목 및 과제 자동 스크래핑: 사용자가 수강 중인 과목과 숨겨진 미완료 과제(공지, 모듈 등)를 자동으로 찾아냅니다.
  • 다중 페이지 강의계획서 파싱: 팝업이나 모달 내부에 있는 강의계획서 정보를 끝까지 스크롤하여 자동으로 읽어오고(Next 버튼 감지), AI가 읽기 좋게 **토큰 다이어트(정규식 압축)**를 수행합니다.
  • 맞춤형 과제 초안 생성: 긁어온 정보를 바탕으로 일반 과제는 .md, 프로그래밍 과제는 .py, .ts 등의 템플릿(초안) 파일을 생성해 줍니다.
  • 안전한 세션 유지: 매번 로그인할 필요 없이 브라우저 세션을 재활용하며, 자격 증명(ID/PW)은 로컬 .env에만 안전하게 보관됩니다. (클라우드 전송 ❌)

⚙️ 사전 요구사항 (Prerequisites)

  • Node.js (v18 이상)
  • Gemini CLI 또는 MCP 표준을 지원하는 AI 에이전트 환경(Cursor, VSCode 등)

📦 설치 가이드 (Installation)

  1. 레포지토리 클론 및 폴더 이동

    git clone https://github.com/YOUR_USERNAME/lms-mcp.git
    cd lms-mcp
    
  2. 의존성 설치 Playwright 및 컴파일 도구를 설치합니다.

    npm install
    
  3. 브라우저 드라이버 설치 (최초 1회) Playwright가 자동화를 시도할 브라우저를 다운로드합니다.

    npx playwright install chromium
    

🖼️ [여기에 설치가 성공적으로 완료된 깔끔한 터미널 스크린샷] ![Installation Success](images/install.png)


🔌 MCP 서버 연동 설정 (Configuration)

이 프로젝트를 사용자의 AI 에이전트(예: Gemini CLI)와 연결하려면 설정 파일에 둥지를 터주어야 합니다.

🔹 설정 파일 위치 (Gemini CLI 기준)

  • Windows: C:\Users\사용자명\.gemini\config.json
  • macOS/Linux: ~/.gemini/config.json

위 설정 파일을 열어 mcpServers 블록 안에 lms-mcp를 아래와 같이 추가하세요. (경로는 본인이 git clone 받은 절대 경로로 작성해야 합니다.)

{
  "mcpServers": {
    "lms-mcp": {
      "command": "npx.cmd",   // macOS의 경우 "npx" 로 변경
      "args": [
        "-y",
        "tsx",
        "C:\\Users\\user\\Desktop\\lms-mcp\\server.ts"  // <--- 본인의 절대 경로로 수정하세요!
      ]
    }
  }
}

🖼️ [여기에 config.json 에 정상적으로 블록이 추가된 VSCode 화면 캡처] ![MCP Config Example](images/config.png)


🛠 사용 방법 (Usage)

MCP 서버가 연동되었다면, AI 에이전트(Gemini CLI) 내장 워크플로우를 통해 매우 쉽게 사용할 수 있습니다.

1️⃣ /init_lms (LMS 초기 셋업)

학기를 시작할 때 또는 강의계획서가 변경되었을 때 실행합니다.

  • 기능: LMS에 접속(최초 시 ID/PW 요구) -> 수강 교과목 탐색 -> 각 과목의 강의계획서를 전부 읽어서 .gemini/context/과목명_index.md 구조로 에이전트 두뇌에 압축 저장합니다.
> /init_lms

🖼️ [여기에 에이전트가 "교과목 목록을 발견했습니다. 진행할까요?" 라고 묻고 다중 페이지를 스캔하는 로그를 보여주는 터미널 캡처] ![Init LMS Running](images/init_lms.png)

2️⃣ /check_assignments (과제 탐색 및 초안 생성)

교수님이 새로운 과제를 올렸는지 확인하거나, 과제를 시작하려 할 때 실행합니다.

  • 기능: 공지사항, 미완료 메뉴, 강의 메인 화면을 뒤져 과제를 스크랩합니다. 발견된 과제가 코딩인지 문서인지 판별 후 drafts/ 폴더 내부에 작업할 빈 파일을 예쁘게 만들어 줍니다.
> /check_assignments

🖼️ [여기에 drafts/ 폴더 하위에 .ts, .md 과제 초안 파일들이 예쁘게 트리 구조로 생성된 에디터 사이드바 캡처] ![Draft Files Created](images/drafts.png)


🔐 보안 안내 (Security)

본 MCP 서버는 사용자의 아이디와 비밀번호를 절대 외부 서버로 전송하지 않습니다. 최초 1회 로그인 시 입력받은 정보는 프로젝트 최상단의 로컬 파일인 .env에 평문 저장되며, 이는 .gitignore에 등록되어 있어 절대 GitHub에 업로드되지 않습니다.


👨‍💻 기여 (Test & Contribution)

기여 방법: LmsService.ts 내의 스크래핑 정규식이 특정 학교 LMS 체계와 맞지 않는다면, 새로운 학교별 Strategy 클래스 구현 PR을 환영합니다! 그 외의 모든 개선 가능성도 환영합니다.

📝 라이선스 (License)

This project is licensed under the MIT License.