ku-portal-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KU_PORTAL_ID | Yes | Your KUPID portal ID (student number) | |
| KU_PORTAL_PW | Yes | Your KUPID portal password |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kupid_loginA | KUPID 포털에 로그인하고 세션을 확인합니다. 환경변수 KU_PORTAL_ID, KU_PORTAL_PW가 설정되어 있어야 합니다. 세션이 유효하면 캐시된 세션을 재사용합니다. |
| kupid_get_noticesC | KUPID 포털의 공지사항 목록을 조회합니다. Args: page: 페이지 번호 (기본값: 1) count: 한 페이지당 항목 수 (기본값: 20) |
| kupid_get_notice_detailA | KUPID 공지사항의 상세 내용을 조회합니다. Args: notice_id: 공지사항 index (kupid_get_notices 결과의 index 필드) message_id: 공지사항 message_id (kupid_get_notices 결과의 message_id 필드) |
| kupid_get_schedulesA | KUPID 포털의 학사일정 목록을 조회합니다. Args: page: 페이지 번호 (기본값: 1) count: 한 페이지당 항목 수 (기본값: 20) |
| kupid_get_schedule_detailB | KUPID 학사일정의 상세 내용을 조회합니다. Args: schedule_id: 학사일정 index (kupid_get_schedules 결과의 index 필드) message_id: 학사일정 message_id (kupid_get_schedules 결과의 message_id 필드) |
| kupid_get_scholarshipsC | KUPID 포털의 장학공지 목록을 조회합니다. Args: page: 페이지 번호 (기본값: 1) count: 한 페이지당 항목 수 (기본값: 20) |
| kupid_get_scholarship_detailA | KUPID 장학공지의 상세 내용을 조회합니다. Args: scholarship_id: 장학공지 index (kupid_get_scholarships 결과의 index 필드) message_id: 장학공지 message_id (kupid_get_scholarships 결과의 message_id 필드) |
| kupid_searchA | KUPID 포털에서 키워드로 공지사항/학사일정/장학공지를 검색합니다. 제목에 키워드가 포함된 항목을 반환합니다. Args: keyword: 검색할 키워드 board: 검색 대상 ("all", "notice", "schedule", "scholarship") count: 최대 결과 수 (기본값: 20) |
| kupid_get_library_seatsA | 고려대학교 도서관 열람실 좌석 현황을 조회합니다. 인증 없이 실시간 좌석 현황을 확인할 수 있습니다. Args: library_name: 도서관 이름 필터 (빈 문자열이면 전체 도서관 조회) - 중앙도서관, 중앙광장, 백주년기념 학술정보관, 과학도서관, 하나스퀘어, 법학도서관 |
| kupid_get_timetableA | 개인 수업시간표를 조회합니다 (SSO 로그인 필요). 포털 메인 페이지의 시간표 위젯 데이터를 파싱합니다. Args: day: 요일 ("all"=전체, "mon"/"tue"/"wed"/"thu"/"fri") ics_export: True이면 ICS 캘린더 파일 내용도 포함 |
| kupid_search_coursesA | 개설과목을 검색합니다 (SSO 로그인 필요). 학과/단과대별로 개설된 과목을 조회합니다. 단과대 코드가 비어있으면 사용 가능한 단과대 목록을 반환합니다. Args: year: 학년도 (기본값: 현재 학기 기준 자동 선택) semester: 학기 ("1"=1학기, "2"=2학기, "summer"=여름학기, "winter"=겨울학기) college: 단과대/대학원 코드 (예: 학부 "5720"=정보대학, 대학원 "7298"=SW·AI융합대학원) department: 학과 코드 (예: 학부 "5722"=컴퓨터학과, 대학원 "7313"=인공지능융합학과) campus: 캠퍼스 ("1"=서울, "2"=세종) is_grad: True면 대학원(LecGradMajorSub.jsp), False면 학부(LecMajorSub.jsp) |
| kupid_room_scheduleA | 건물/강의실의 정규 수업 시간표를 조회합니다 (학부+대학원 통합, SSO 로그인 필요). "이 강의실 오늘 비어있나?" 확인용. 학부 22개 + 대학원 38개 단과대를 병렬 호출하므로 호출당 30~60초 소요 (총 800+ 학과 fan-out). 같은 학기는 자주 안 바뀌니 결과를 호출 측에서 캐싱 권장. 한계:
Args: building: 건물명 부분일치 (예: "애기능" → "애기능생활관" 매치) room: 호실 부분일치 (예: "301" → "301호" / "B301"). 비우면 건물 전체. day: 요일 필터 ("월"/"화"/.../"토"/"일"). 비우면 전 요일. year: 학년도 (기본값: 현재 학기 기준 자동) semester: 학기 ("1","2","summer","winter") campus: "1"=서울, "2"=세종 include_grad: True(기본)면 대학원도 검색, False면 학부만 |
| kupid_get_syllabusA | 강의계획서를 조회합니다 (SSO 로그인 필요). Args: course_code: 학수번호 (예: "COSE101") section: 분반 (예: "02") year: 학년도 (기본값: 현재 학기 기준 자동 선택) semester: 학기 ("1"=1학기, "2"=2학기, "summer"=여름학기, "winter"=겨울학기) |
| kupid_my_coursesA | 내 수강신청 내역을 조회합니다 (SSO 로그인 필요). 학수번호, 강의시간, 강의실, 교수, 학점, 이수구분 등 상세 정보를 반환합니다. 대학원 과목도 포함됩니다. Args: year: 학년도 (기본값: 현재 학기 기준 자동 선택) semester: 학기 ("1"=1학기, "2"=2학기, "summer"=여름학기, "winter"=겨울학기) |
| kupid_get_all_gradesA | 전체 성적, 누적 GPA, 취득학점을 조회합니다 (SSO 로그인 필요). KUPID 학적/졸업 > 성적사항 > 전체성적조회 화면의 최종 확정 성적을 가져옵니다. Args: year_term: 조회할 학년도/학기 코드 (예: "20242R"). 비우면 전체 조회 |
| kupid_dept_noticesA | 학과/대학원 홈페이지 공지사항을 조회합니다 (인증 불필요). 고려대학교 학과 홈페이지의 공지사항 게시판을 스크래핑합니다. site_name을 지정하지 않으면 사용 가능한 사이트 목록을 반환합니다. 환경변수 KU_DEPT_URLS로 소속 학과를 설정할 수 있습니다. 형식: "라벨|URL,라벨|URL,..." 예: "SW·AI융합대학원|https://gscit.korea.ac.kr/gscit/board/notice_master.do" Args: site_name: 사이트 이름 또는 키 (빈 문자열이면 사이트 목록 반환) page: 페이지 번호 (기본값: 1) count: 한 페이지당 항목 수 (기본값: 20) |
| kupid_dept_notice_detailA | 학과/대학원 공지사항의 상세 내용을 조회합니다 (인증 불필요). kupid_dept_notices로 조회한 공지의 상세 내용을 가져옵니다. Args: site_name: 사이트 이름 또는 키 (kupid_dept_notices에서 사용한 값) article_no: 게시글 번호 (kupid_dept_notices 결과의 article_no 필드) |
| kupid_lms_coursesB | Canvas LMS 수강과목 목록을 조회합니다. mylms.korea.ac.kr의 Canvas LMS에서 수강 중인 과목 목록을 가져옵니다. SSO 로그인이 필요합니다. |
| kupid_lms_assignmentsA | Canvas LMS 과제 목록을 조회합니다. 특정 과목의 전체 과제(assignments) 목록을 가져옵니다. 기본적으로 완료/마감 과제 포함 전체를 반환합니다. kupid_lms_courses로 course_id를 먼저 확인하세요. Args: course_id: 과목 ID (kupid_lms_courses의 id 필드) upcoming_only: True이면 마감 전 과제만 표시 (기본값: False, 전체 과제 반환) |
| kupid_lms_modulesA | Canvas LMS 강의자료(모듈)를 조회합니다. 주차별 강의 모듈과 포함된 자료를 가져옵니다. kupid_lms_courses로 course_id를 먼저 확인하세요. Args: course_id: 과목 ID (kupid_lms_courses의 id 필드) |
| kupid_lms_todoA | Canvas LMS 할 일(Todo) 목록을 조회합니다. 마감이 다가오는 과제, 퀴즈 등을 보여줍니다. |
| kupid_lms_dashboardA | Canvas LMS 대시보드를 조회합니다. 현재 수강 중인 과목 카드와 과제/이벤트 현황을 보여줍니다. |
| kupid_lms_announcementsA | Canvas LMS 공지(announcement)를 조회합니다. course_id를 지정하면 해당 과목, 생략하면 현재 활성 과목 전체의 공지를 가져옵니다. kupid_lms_dashboard와 달리 message 본문을 절단하지 않고 전문(HTML)으로 반환합니다. Args: course_id: 과목 ID (생략 시 활성 과목 전체, kupid_lms_courses 참조) |
| kupid_lms_gradesA | Canvas LMS 성적/점수를 조회합니다. 과목별 현재 점수, 최종 점수, 학점(grade)을 확인합니다. kupid_lms_courses로 course_id를 먼저 확인하세요. Args: course_id: 과목 ID (kupid_lms_courses의 id 필드) |
| kupid_lms_submissionsA | Canvas LMS 과제 제출 현황을 조회합니다. 과목의 전체 과제에 대한 제출 여부, 점수, 채점 상태를 확인합니다. kupid_lms_courses로 course_id를 먼저 확인하세요. Args: course_id: 과목 ID (kupid_lms_courses의 id 필드) |
| kupid_lms_quizzesA | Canvas LMS 퀴즈/시험 목록을 조회합니다. 과목의 퀴즈, 시험, 설문 목록과 마감일, 시간제한 등을 확인합니다. kupid_lms_courses로 course_id를 먼저 확인하세요. Args: course_id: 과목 ID (kupid_lms_courses의 id 필드) |
| kupid_lms_syllabusA | Canvas LMS 수업 계획서(syllabus)를 조회합니다. 과목의 수업 계획서 내용을 가져옵니다. course_code(예: BDC115) 또는 course_id 중 하나를 입력하세요. course_code를 입력하면 수강과목 목록에서 자동으로 course_id를 찾습니다. Args: course_code: 과목코드 (예: BDC115). course_id 대신 사용 가능 course_id: 과목 ID (kupid_lms_courses의 id 필드). course_code 대신 사용 가능 |
| kupid_lms_download_fileA | Canvas LMS 파일을 지정한 디렉토리에 다운로드합니다. file_id는 kupid_lms_modules 결과의 items에서 type이 'File'인 항목의 content_id 필드에서 얻을 수 있습니다. Args: file_id: Canvas 파일 ID (items[*].content_id) save_dir: 저장할 디렉토리 절대경로 (예: /Users/me/Documents/lecture) filename: 저장 파일명 (생략 시 Canvas 원본 파일명 사용) |
| kupid_lms_list_boardsA | Canvas LMS 과목의 게시판 목록을 조회합니다. Q&A 게시판, 강의자료실 등 교수님이 자료를 올리는 게시판들을 반환합니다. Canvas 네이티브 모듈(kupid_lms_modules)에 자료가 없으면 여기서 찾아보세요. Args: course_id: 과목 ID (kupid_lms_courses의 id 필드) |
| kupid_lms_list_board_postsB | 게시판의 게시글 목록을 조회합니다. Args: course_id: 과목 ID board_id: 게시판 ID (kupid_lms_list_boards의 id 필드) page: 페이지 번호 (기본 1) keyword: 제목 검색어 (기본 전체) |
| kupid_lms_get_board_postA | 게시글 상세와 첨부파일, 댓글(첨부 포함)을 조회합니다. attachments의 canvas_file_id를 kupid_lms_download_file의 file_id로 넘기면 파일을 다운로드할 수 있습니다. attachments[].url은 직접 다운로드 링크입니다(시간제한 verifier 토큰 포함). comments에는 각 댓글의 본문과 첨부파일(동영상/PDF 등)이 포함됩니다. 예: 텀프로젝트 게시판에서 팀별 발표 동영상은 댓글 첨부로 제출됩니다. Args: course_id: 과목 ID board_id: 게시판 ID post_id: 게시글 ID (kupid_lms_list_board_posts의 id 필드) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SonAIengine/ku-portal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server