CAU e-class MCP
Provides tools for interacting with the CAU e-class (Canvas-based) system, including dashboard, daily briefing, course details, file downloads, and VOD streaming link extraction.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
๐ CAU e-class MCP
๋ธ๋ผ์ฐ์ ์์ด Claude์์ ๋ฐ๋ก ์ค์๋ e-class๋ฅผ ํ์ธํ์ธ์!
๊ณต์ง์ฌํญ, ๊ณผ์ , ๊ฐ์์๋ฃ๋ฅผ Claude์ ๋ํํ๋ฉด์ ํ์ธํ ์ ์๋ MCP ์๋ฒ์ ๋๋ค.
โ ๏ธ ํ์์ด ๋ง๋ ๋น๊ณต์ ๋๊ตฌ์ ๋๋ค. ์ค์๋ํ๊ต์ ๋ฌด๊ดํ๋ฉฐ, ์ฌ์ฉ์ ๋ฐ๋ฅธ ์ฑ ์์ ๋ณธ์ธ์๊ฒ ์์ต๋๋ค.
โจ ์ด๋ฐ ๊ฑธ ํ ์ ์์ด์
๊ธฐ๋ฅ | ์ค๋ช |
๐ ๋์๋ณด๋ | ์๊ฐ ์ค์ธ ์ ์ฒด ๊ณผ๋ชฉ ํ๋์ ๋ณด๊ธฐ |
๐ ๋ฐ์ผ๋ฆฌ ๋ธ๋ฆฌํ | ์ค๋ ํ ์ผ, ์ชฝ์ง, ๊ณต์ง์ฌํญ์ ํ ๋ฒ์ ์์ฝ |
๐ ํตํฉ ์์ธ ์กฐํ | ๊ณผ๋ชฉ๋ณ ๊ฐ์(์ถ์ ํฌํจ), ๊ณผ์ , ์๋ฃ์ค ์ ๋ณด ์กฐํ |
๐ฅ VOD ์ง๋งํฌ | ๋์์ ๊ฐ์์ ์ค์ ์คํธ๋ฆฌ๋ฐ ์ฃผ์ ์ถ์ถ |
๐ ์ง๋ฅํ ๋ค์ด๋ก๋ | ํ์ผ๋ช ๋ณ๊ฒฝ ๋ฐ ๊ณผ๋ชฉ๋ณ ํด๋ ์๋ ๊ด๋ฆฌ ๋ค์ด๋ก๋ |
๐ Web UI | ๋ธ๋ผ์ฐ์ ์์ ์ธ์ฆ ์ค์ + ์๋ฒ ๋ชจ๋ํฐ๋ง |
Related MCP server: klas-mcp
๐ ์์ํ๊ธฐ
ํ์ํ ๊ฒ
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์์ ์๋์ผ๋ก ์ฌ์ฉ๋๋ ๋๊ตฌ๋ค์ ๋๋ค:
๋๊ตฌ | ์ค๋ช | ํ๋ผ๋ฏธํฐ |
| ์ ์ฒด ์๊ฐ ๊ณผ๋ชฉ ์กฐํ | ์์ |
| (์ถ์ฒ) ํตํฉ ๋ฐ์ผ๋ฆฌ ๋ธ๋ฆฌํ | ์์ |
| ๊ฐ์/๊ณผ์ /์๋ฃ์ค ์์ธ ์กฐํ |
|
| ์ค๋งํธ ํ์ผ ๋ค์ด๋ก๋ |
|
| ๋์์ ์คํธ๋ฆฌ๋ฐ ๋งํฌ ์ถ์ถ |
|
๐๏ธ ๊ธฐ์ ๊ตฌ์กฐ
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 ํ์ผ ์ฐธ๊ณ
๐ ๊ฐ์ฌ
13์๊ฐ์ CAU-ON API ๋๋ฒ๊น ์์ ํ์ ๐
๊ถ๊ธํ ์ ์ด๋ ๋ฒ๊ทธ๋? โ GitHub Issues์ ๋จ๊ฒจ์ฃผ์ธ์!
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
AI-powered corporate learning platform โ manage courses, users, and insights via Claude.
Give Claude only the Google Drive files you choose. Every action logged.
A second brain for Claude: remembers your work, plans your day, encrypted under a key only you hold.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables Claude to interact with Canvas LMS, allowing natural language queries about courses, deadlines, grades, and feedback.29MIT
- AlicenseAqualityBmaintenanceEnables AI agents to safely automate Kwangwoon University KLAS tasks, including viewing academic schedules, assignment deadlines, lecture progress, and downloading course materials, with secure session recovery and credential isolation.8MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to query SeoulTech e-Class course announcements and assignments, search full notice text, track pending work, and refresh login sessions securely through natural language.71MIT
- AlicenseBqualityCmaintenanceEnables AI agents to access Kwangwoon University's KLAS academic system for course schedules, deadlines, attendance, lecture materials, assignments, and adaptive study tools while keeping credentials and data local.31MIT