Ku Portal MCP
MCP server for Korea University KUPID portal & Canvas LMS β notices, schedules, library seats, assignments, grades from Claude
Ask AI about Ku Portal MCP
Powered by Claude Β· Grounded in docs
I know everything about Ku Portal MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
ku-portal-mcp
κ³ λ €λνκ΅ KUPID ν¬νΈ MCP μλ² β Claude Codeμμ λν μνμ νμν μ 보λ₯Ό λ°λ‘ μ‘°ν
"곡μ§μ¬ν 보μ¬μ€", "λμκ΄ λΉμ리 μμ΄?", "μ΄λ² μ£Ό κ³Όμ λ μμ΄?" κ°μ μμ°μ΄λ‘ ν¬νΈκ³Ό LMSλ₯Ό μ¬μ©ν μ μμ΅λλ€.
|
"μμ λκ° μλ?" β LMS μκ°κ³Όλͺ© μ‘°ν |
"곡μ§μ¬ν 보μ¬μ€" β μ 체 + νκ³Ό κ³΅μ§ μ‘°ν |
μ΄λ° κ±Έ ν μ μμ΄μ
1. 곡μ§μ¬ν / νμ¬μΌμ / μ₯ν곡μ§
KUPID ν¬νΈμ κ°μ’ κ²μνμ μ‘°ννκ³ , ν€μλλ‘ κ²μν μ μμ΅λλ€.
> μ΅κ·Ό 곡μ§μ¬ν 보μ¬μ€
> "μκ°μ μ²" κ΄λ ¨ κ³΅μ§ κ²μν΄μ€
> μ΄λ² λ¬ νμ¬μΌμ μλ €μ€
> μ₯νκΈ κ΄λ ¨ κ³΅μ§ μμ΄?
> 곡μ§μ¬ν 3λ²μ§Έ κΈ μμΈ λ΄μ© 보μ¬μ€
- 곡μ§μ¬ν, νμ¬μΌμ , μ₯νκ³΅μ§ λͺ©λ‘ μ‘°ν + μμΈ λ΄μ© μ΄λ
- μ λͺ© κΈ°μ€ ν€μλ ν΅ν© κ²μ (곡μ§/μΌμ /μ₯ν λμ κ²μ κ°λ₯)
- 첨λΆνμΌ λͺ©λ‘, μμ±μ, μμ±μΌ λ± λ©ν μ 보 ν¬ν¨
2. λμκ΄ μ’μ νν© (λ‘κ·ΈμΈ λΆνμ)
6κ° λμκ΄, 53κ° μ΄λμ€μ μ€μκ° μ’μ νν©μ νμΈν©λλ€. λ‘κ·ΈμΈ μμ΄ λ°λ‘ μ‘°ν κ°λ₯ν©λλ€.
> μ€μλμκ΄ λΉμ리 λͺ κ°μΌ?
> κ³Όνλμκ΄ μ’μ νν© λ³΄μ¬μ€
> μ 체 λμκ΄ μ’μ νν© μλ €μ€
> λ
ΈνΈλΆ μ¬μ© κ°λ₯ν μ΄λμ€ μ΄λμΌ?
- λμ λμκ΄: μ€μλμκ΄, μ€μκ΄μ₯, λ°±μ£Όλ κΈ°λ νμ μ 보κ΄, κ³Όνλμκ΄, νλμ€νμ΄, λ²νλμκ΄
- μ΄λμ€λ³ μ΄ μ’μ / μ¬μ© μ€ / μμ¬ μ’μ μ€μκ° νμ
- λ ΈνΈλΆ νμ© μ¬λΆ, μ΄μμκ° μ 보 ν¬ν¨
- μ 체 λμκ΄ ν©μ° μ΄μ©λ₯ (%) μ 곡
3. μμ μκ°ν + ICS λ΄λ³΄λ΄κΈ°
ν¬νΈμ λ±λ‘λ κ°μΈ μμ μκ°νλ₯Ό μ‘°ννκ³ , κ΅¬κΈ μΊλ¦°λ λ±μ μΆκ°ν μ μλ ICS νμΌλ‘ λ΄λ³΄λ λλ€.
> μ΄λ² μ£Ό μκ°ν 보μ¬μ€
> μμμΌ μμ
λ μμ΄?
> μκ°νλ₯Ό ICS νμΌλ‘ λ§λ€μ΄μ€
> μ€λ μμ
λͺ μμ μμν΄?
- μ~κΈ μμΌλ³ μ‘°ν λλ μ 체 μ£Όκ° μκ°ν νλ²μ 보기
- κ΅μ β μ€μ μκ° μλ λ³ν (1κ΅μ=09:00
10:15, 2κ΅μ=10:3011:45 ...) - ICS μΊλ¦°λ νμΌ μμ± β κ΅¬κΈ μΊλ¦°λ, Apple μΊλ¦°λμ λ°λ‘ μΆκ° κ°λ₯
- κ³Όλͺ©λͺ , κ°μμ€, κ΅μ μ 보 ν¬ν¨
4. λ΄ μκ°μ μ² λ΄μ
μκ°μ μ²ν κ³Όλͺ©μ νμλ²νΈ, κ°μμκ°, κ°μμ€, κ΅μ λ± μμΈ μ 보λ₯Ό νμΈν©λλ€. λνμ κ³Όλͺ©λ μ§μν©λλ€.
> λ΄ μκ°κ³Όλͺ© 보μ¬μ€
> μ΄λ² νκΈ° λ λ£κ³ μμ΄?
> λ΄ μμ
κ°μμ€ μ΄λμΌ?
> μ΄ λͺ νμ μ μ²νμ΄?
- νμλ²νΈ, λΆλ°, μ΄μꡬλΆ, κ΅κ³Όλͺ©λͺ , λ΄λΉκ΅μ, νμ , κ°μμκ°/κ°μμ€
- μ¬μκ° μ¬λΆ, μ μ² μν νμΈ
- μ΄ μ μ² νμ ν©μ°
- λνμ κ³Όλͺ© ν¬ν¨ (κΈ°μ‘΄ μκ°ν/κ°μ€κ³Όλͺ© κ²μμΌλ‘ μ λμ€λ κ³Όλͺ©)
5. κ°μ€κ³Όλͺ© κ²μ + κ°μκ³νμ
νκ³Ό/λ¨κ³Όλλ³ κ°μ€ κ³Όλͺ©μ κ²μνκ³ , κ°μκ³νμλ₯Ό μ‘°νν©λλ€.
> μ 보λν μ»΄ν¨ν°νκ³Ό κ°μ€κ³Όλͺ© 보μ¬μ€
> μ΄λ² νκΈ° κ²½μλνμ μ΄λ€ νκ³Όκ° μμ΄?
> COSE101 κ°μκ³νμ 보μ¬μ€
> AAI110 κ°μκ³νμ 보μ¬μ€
> 곡과λν κ°μ€κ³Όλͺ© κ²μν΄μ€
- λ¨κ³Όλ β νκ³Ό β κ³Όλͺ© λ¨κ³μ κ²μ (μ½λλ₯Ό λͺ°λΌλ λ©λλ€)
- μμΈμΊ νΌμ€ 14κ° λ¨κ³Όλ μ§μ (κ²½μλν, λ¬Έκ³Όλν, μ 보λν, 곡과λν λ±)
- κ³Όλͺ©λ³ νμλ²νΈ, λΆλ°, κ΅μλͺ , νμ , μκ°ν μ 보
- κ°μκ³νμ μ‘°ν: νμλ²νΈλ‘ κ΅μ/νμ /μκ°ν λ± κ³Όλͺ© μ 보 μλ μΆμΆ (90+ νκ³Ό λ§€ν)
- λνμ κ³Όλͺ©(AAI λ±) ν¬ν¨ μ§μ
6. Canvas LMS β μκ°κ³Όλͺ© / κ³Όμ / κ°μμλ£
κ³ λ €λνκ΅ Canvas LMS(mylms.korea.ac.kr)μ μ μνμ¬ μκ° μ 보λ₯Ό μ‘°νν©λλ€.
> LMSμ μ΄λ€ κ³Όλͺ© λ£κ³ μμ΄?
> λ₯λ¬λ κ³Όμ λͺ©λ‘ 보μ¬μ€
> μμ§ μ λΈ κ³Όμ μμ΄?
> μμ°μ΄μ²λ¦¬ κ°μμλ£ λ³΄μ¬μ€
> μ΄λ² μ£Ό μ μΆν κ³Όμ λμΌ?
> LMS λμ보λ 보μ¬μ€
> λ₯λ¬λ μ±μ μ΄λ?
> κ³Όμ μ μΆ νν© λ³΄μ¬μ€
> ν΄μ¦ μΌμ μμ΄?
- μκ°κ³Όλͺ© λͺ©λ‘: νμ¬ νκΈ° μκ° μ€μΈ κ³Όλͺ©κ³Ό νκΈ° μ 보
- κ³Όμ λͺ©λ‘: κ³Όλͺ©λ³ κ³Όμ , μ μΆ κΈ°ν, λ°°μ , μ μΆ λ°©μ νμΈ
- κ°μμλ£(λͺ¨λ): μ£Όμ°¨λ³ κ°μ λͺ¨λκ³Ό ν¬ν¨λ μλ£(κ°μ μμ, PDF, ν΄μ¦ λ±)
- ν μΌ λͺ©λ‘: λ§κ°μ΄ λ€κ°μ€λ κ³Όμ μ μ΄λ²€νΈλ₯Ό νλμ
- λμ보λ: μκ° κ³Όλͺ© μΉ΄λ + κ³Όλͺ©λ³ 곡μ§μ¬ν λͺ¨μ보기
- μ±μ /μ μ μ‘°ν: κ³Όλͺ©λ³ νμ¬ μ μ, μ΅μ’ μ μ, νμ νμΈ
- κ³Όμ μ μΆ νν©: μ μΆ μ¬λΆ, μ±μ μ μ, μ§κ°/λ―Έμ μΆ μν νμΈ
- ν΄μ¦/μν λͺ©λ‘: ν΄μ¦ μΌμ , μκ°μ ν, λ¬Έν μ νμΈ
λ λ§μ μ¬μ© μμλ EXAMPLES.mdλ₯Ό μ°Έκ³ νμΈμ.
μ 체 Tool λͺ©λ‘
| # | Tool | μ€λͺ | μΈμ¦ |
|---|---|---|---|
| 1 | kupid_login | ν¬νΈ λ‘κ·ΈμΈ / μΈμ νμΈ | SSO |
| 2 | kupid_get_notices | 곡μ§μ¬ν λͺ©λ‘ | SSO |
| 3 | kupid_get_notice_detail | 곡μ§μ¬ν μμΈ | SSO |
| 4 | kupid_get_schedules | νμ¬μΌμ λͺ©λ‘ | SSO |
| 5 | kupid_get_schedule_detail | νμ¬μΌμ μμΈ | SSO |
| 6 | kupid_get_scholarships | μ₯νκ³΅μ§ λͺ©λ‘ | SSO |
| 7 | kupid_get_scholarship_detail | μ₯νκ³΅μ§ μμΈ | SSO |
| 8 | kupid_search | 곡μ§/μΌμ /μ₯ν ν΅ν© κ²μ | SSO |
| 9 | kupid_get_library_seats | λμκ΄ μ΄λμ€ μ’μ νν© | λΆνμ |
| 10 | kupid_get_timetable | κ°μΈ μμ μκ°ν + ICS λ΄λ³΄λ΄κΈ° | SSO |
| 11 | kupid_search_courses | κ°μ€κ³Όλͺ© κ²μ (λ¨κ³Όλ/νκ³Όλ³) | SSO |
| 12 | kupid_get_syllabus | κ°μκ³νμ μ‘°ν | SSO |
| 13 | kupid_my_courses | λ΄ μκ°μ μ² λ΄μ (νμλ²νΈ/μκ°/κ°μμ€) | SSO |
| 14 | kupid_lms_courses | LMS μκ°κ³Όλͺ© λͺ©λ‘ | KSSO |
| 15 | kupid_lms_assignments | LMS κ³Όμ λͺ©λ‘ (κ³Όλͺ©λ³) | KSSO |
| 16 | kupid_lms_modules | LMS κ°μμλ£ (μ£Όμ°¨λ³ λͺ¨λ) | KSSO |
| 17 | kupid_lms_todo | LMS ν μΌ / λ€κ°μ€λ μ΄λ²€νΈ | KSSO |
| 18 | kupid_lms_dashboard | LMS λμ보λ + 곡μ§μ¬ν | KSSO |
| 19 | kupid_lms_grades | LMS μ±μ /μ μ μ‘°ν | KSSO |
| 20 | kupid_lms_submissions | LMS κ³Όμ μ μΆ νν© | KSSO |
| 21 | kupid_lms_quizzes | LMS ν΄μ¦/μν λͺ©λ‘ | KSSO |
μΈμ¦ μλ΄: SSO = KUPID ν¬νΈ μΈμ¦, KSSO = κ³ λ €λ ν΅ν© SSO (Canvas LMSμ©). λͺ¨λ κ°μ ID/PWλ₯Ό μ¬μ©νλ©°, νκ²½λ³μλ§ μ€μ νλ©΄ μλμΌλ‘ λ‘κ·ΈμΈλ©λλ€.
μ€μΉ
λ°©λ² 1: uvx (κΆμ₯)
μ€μΉ μμ΄ νμ μ΅μ λ²μ μ μ€νν©λλ€. Claude Codeμμ νΈνμ±μ΄ κ°μ₯ μ’μ΅λλ€.
uvx ku-portal-mcp
λ°©λ² 2: pip
pip install ku-portal-mcp
λ°©λ² 3: μμ€μμ μ€μΉ
git clone https://github.com/SonAIengine/ku-portal-mcp.git
cd ku-portal-mcp
pip install -e .
Claude Codeμμ μ¬μ©νκΈ°
1. MCP μλ² λ±λ‘
claude mcp add CLI λͺ
λ ΉμΌλ‘ λ±λ‘ν©λλ€:
uvx μ¬μ© (κΆμ₯):
claude mcp add -s user \
-e KU_PORTAL_ID=your-kupid-id \
-e KU_PORTAL_PW=your-kupid-password \
ku-portal \
uvx ku-portal-mcp@latest
pipμΌλ‘ μ€μΉν κ²½μ°:
claude mcp add -s user \
-e KU_PORTAL_ID=your-kupid-id \
-e KU_PORTAL_PW=your-kupid-password \
ku-portal \
ku-portal-mcp
KU_PORTAL_IDμKU_PORTAL_PWλ KUPID ν¬νΈ λ‘κ·ΈμΈμ μ¬μ©νλ νλ²κ³Ό λΉλ°λ²νΈμ λλ€.-s userλ κΈλ‘λ²(λͺ¨λ νλ‘μ νΈ) λ±λ‘μ λλ€. νΉμ νλ‘μ νΈμμλ§ μ¬μ©νλ €λ©΄-s projectλ‘ λ³κ²½νμΈμ.
2. μ€μ μ μ©
MCP μλ² μ€μ μ Claude Code μμ μμ μ 1ν λ‘λλ©λλ€.
- λ°©λ² A: Claude Codeλ₯Ό μ¬μμ
- λ°©λ² B: μΈμ
λ΄μμ
/mcpλͺ λ Ήμ΄ μ€ν β MCP μλ² μΆκ°/μ¬μμμ μ¬μμ μμ΄ λ°λ‘ μ μ©
3. λμ νμΈ
Claude Codeμμ μλμ κ°μ΄ μμ°μ΄λ‘ λ¬Όμ΄λ³΄μΈμ:
> λμκ΄ μ’μ νν© λ³΄μ¬μ€
λ‘κ·ΈμΈ μμ΄ λ°λ‘ κ²°κ³Όκ° λμ€λ©΄ μ μμ μΌλ‘ μ€μΉλ κ²μ λλ€.
> μ΅κ·Ό 곡μ§μ¬ν 보μ¬μ€
> μ΄λ² μ£Ό κ³Όμ λ μμ΄?
> λ΄ μκ°ν 보μ¬μ€
4. /ku μ¬λμ 컀맨λ νμ©
examples/commands/ku.mdλ₯Ό Claude Codeμ 컀μ€ν
μ¬λμ 컀맨λλ‘ λ±λ‘νλ©΄, /ku ν μ€λ‘ ν¬νΈ μ‘°νλ₯Ό λ λΉ λ₯΄κ² ν μ μμ΅λλ€.
μ€μΉ: examples/commands/ku.md νμΌμ νλ‘μ νΈμ .claude/commands/ λλ ~/.claude/commands/μ 볡μ¬ν©λλ€.
# κΈλ‘λ² μ»€λ§¨λλ‘ λ±λ‘ (λͺ¨λ νλ‘μ νΈμμ μ¬μ©)
mkdir -p ~/.claude/commands
cp examples/commands/ku.md ~/.claude/commands/ku.md
μ¬μ© μμ:
> /ku λμκ΄
> /ku κ³΅μ§ μκ°μ μ²
> /ku κ³Όμ
> /ku μκ°ν
> /ku μ±μ
> /ku κ²μ μ₯νκΈ
μ¬λμ 컀맨λλ νμν MCP toolλ§ μλμΌλ‘ νμ©νλ―λ‘, μμ°μ΄ μ§μλ³΄λ€ λΉ λ₯΄κ³ μ ννκ² λμν©λλ€. μμΈν ν€μλ λͺ©λ‘μ
examples/commands/ku.mdλ₯Ό μ°Έκ³ νμΈμ.
νλ‘μ νΈ κ΅¬μ‘°
ku_portal_mcp/
βββ server.py # MCP μλ² + 21κ° tool λ±λ‘
βββ auth.py # KUPID SSO λ‘κ·ΈμΈ, μΈμ
μΊμ± (30λΆ TTL)
βββ scraper.py # GRW 곡μ§/μΌμ /μ₯ν νμ±
βββ library.py # λμκ΄ μ’μ νν© (librsv.korea.ac.kr)
βββ timetable.py # μμ
μκ°ν + ICS export
βββ courses.py # κ°μ€κ³Όλͺ© κ²μ, κ°μκ³νμ (infodepot.korea.ac.kr)
βββ lms.py # Canvas LMS μ°λ (mylms.korea.ac.kr, KSSO SAML)
κΈ°μ μ€ν
| μμ | κΈ°μ | μ€λͺ |
|---|---|---|
| MCP | FastMCP (mcp[cli]) | Claude Code μ°λ νλ‘ν μ½ |
| HTTP | httpx (async) | λΉλκΈ° HTTP ν΄λΌμ΄μΈνΈ |
| νμ± | BeautifulSoup4 + lxml | HTML μ€ν¬λν |
| ν¬νΈ μΈμ¦ | KUPID SSO | λμ νΌ νλ + ssotoken μΆμΆ |
| LMS μΈμ¦ | KSSO SAML SSO | SAML IdP λ‘κ·ΈμΈ + RSA 볡νΈν |
| μνΈν | cryptography | Canvas μμ λΉλ°λ²νΈ RSA 볡νΈν |
| λμκ΄ | HODI REST API | librsv.korea.ac.kr (μΈμ¦ λΆνμ) |
| κ°μ€κ³Όλͺ© | infodepot | SSO token handoff λ°©μ μΈμ μ°λ |
| LMS API | Canvas REST API | mylms.korea.ac.kr μΈμ μΏ ν€ μΈμ¦ |
νΈλ¬λΈμν
MCP μλ²κ° μ°κ²°λμ§ μμ λ
-
μλ²κ° μ μ λμνλμ§ νμΈ:
ku-portal-mcp --version -
μλ²κ° λ±λ‘λμ΄ μλμ§ νμΈ:
claude mcp listλͺ©λ‘μ
ku-portalμ΄ μμΌλ©΄ μ€μΉ > 1. MCP μλ² λ±λ‘μ μ°Έκ³ νμΈμ. -
Claude Code μ¬μμ ν
/mcpλͺ λ ΉμΌλ‘ μλ² μν νμΈ
MCP μλ²κ° λͺ©λ‘μ 보μ΄μ§ μμ λ
Claude Codeλ MCP μλ² μ€μ μ ~/.claude.jsonμμ μ½μ΅λλ€. ~/.claude/settings.jsonμ mcpServersμ λ£μΌλ©΄ μΈμλμ§ μμ΅λλ€.
λ°λμ claude mcp add λͺ
λ ΉμΌλ‘ λ±λ‘νμΈμ:
claude mcp add -s user \
-e KU_PORTAL_ID=your-id \
-e KU_PORTAL_PW=your-pw \
ku-portal \
uvx ku-portal-mcp@latest
μλ² μμ μ νμμμμ΄ λ°μν λ
μλ² μ΄κΈ°νμ μ μ΄κ° 걸릴 μ μμ΅λλ€. κΈ°λ³Έ νμμμμ΄ μ§§μ μ°κ²° μ€ν¨κ° λ°μνλ©΄, ~/.claude/settings.jsonμ envμ νμμμμ λλ €μ£ΌμΈμ:
{
"env": {
"MCP_TIMEOUT": "30000"
}
}
νκ²½λ³μ κ΄λ ¨
claude mcp addμ-eμ΅μ μΌλ‘ νκ²½λ³μλ₯Ό μ€μ ν©λλ€- μ΄λ―Έ λ±λ‘λ μλ²μ νκ²½λ³μλ₯Ό λ³κ²½νλ €λ©΄
claude mcp remove ku-portalν λ€μ μΆκ°νμΈμ
λΌμ΄μ μ€
MIT
