MyCourseVille MCP Server
MyCourseVille MCP Server
AI 에이전트가 사용자의 MyCourseVille 계정에 접근할 수 있게 해 주는 MCP 서버입니다. 마감일과 설명이 포함된 새 과제, 강의 자료, 공개된 성적 — 그리고 "지난번 이후 변경된 내용" 피드까지 제공합니다.
자체 계정 데이터를 위한 개인 도구입니다. 폴링 간격은 예의 있게 유지하고, 자격 증명을 절대 커밋하지 마세요.
작동 방식
MCV에는 공식 OAuth2 API(/api/v1/public/get/*)가 있지만, 앱을 등록해야 client_id/client_secret을 받을 수 있고 엔드포인트 이름도 공개 문서화되어 있지 않습니다. 이 서버는 대신 MCV 웹 클라이언트와 똑같은 방식으로 로그인합니다 — 기본적으로 IT Chula SSO 버튼을 통하거나, 일반 MCV 폼을 통해서입니다. 그런 다음 브라우저에 제공되는 것과 동일한 서버 렌더링 강좌 페이지를 읽습니다. 자료는 강좌 홈에서, 마감일은 /assignment에서, 성적은 /portfolio-<student id>에서 가져옵니다. 자세한 내용은 docs/ENDPOINTS.md를 참조하세요.
가져온 데이터는 로컬 SQLite 스냅샷에 유지됩니다. 모든 동기화는 그 스냅샷과 비교(diff)해서 events 로그에 추가합니다. whats_new는 그 로그를 읽으므로, 지난번 확인 이후 나타난 것을 서버가 알려줄 수 있습니다. 백그라운드 폴러가 일정 간격으로 새로고침하기 때문에 채팅이 열려 있지 않아도 새 과제를 감지할 수 있습니다.
"새"에 관해: MCV가 게시 시점 타임스탬프를 신뢰할 수 있게 제공하지 않으므로, first_seen — 이 서버가 항목을 처음 관찰한 시점 — 을 대신 사용합니다. 첫 동기화는 전체 학기가 새로 조용히 채우는 대신, 조용히 전부 백필합니다.
Related MCP server: UofT Student Helper MCP Server
설치
uv sync --extra dev
cp .env.example .env # then fill in MCV_USERNAME / MCV_PASSWORD
uv run mcv-mcp --selftest--selftest는 로그인하고, 동기화를 한 번 수행한 다음 발견한 강좌 수, 과제 수, 자료 수, 성적 수를 출력합니다. 에이전트를 연결하기 전에 이 명령이 동작하는지 확인하세요.
Claude Code에 등록:
claude mcp add mcv -- uv --directory C:\Users\velys\Documents\mcp_mcv run mcv-mcp그리고 상태 좀 물어보세요: "이번 주에 마감인 게 뭐야?", "어제 이후 MCV 갱신된 게 뭘까?", "Comp Prog 최신 슬라이드를 다운로드해 주세요."
도구
도구 | 설명 |
| 어느 시점 이후 새롭게 나타났거나 변한 진도곤재, 자료, 성적 |
| 다음 N일 이내로 마감인 것, 임박한 순서대로 |
| 수강 중인 강좌 (옵션으로 특정 학기만) |
| 마감일과 설명을 담은 과제 목록 |
| 하나의 과308제에 대한 전체 상세 |
| 강좌에 올라온 파일 (폴더, 이름, URL) |
| 파일을 로컬에 저장; PDF 텍스트를 추출해 읽을 수 있게 하는 것 |
| 공개된 성적인 |
| 강제 새로고침 ( |
| 진단 정보: 로그인 상태, 최근 동기화, 행 수 |
환경설정
변수 / 값 | 기본값 | 설명 |
| — | MCV 로그인 정보 |
|
| IT Chula SSO 버튼은 |
|
| 폴럼 주기 (하한 10) |
|
|
|
|
| DB, 쿠키, 다운로드 파일이 저장되는 디렉터리 |
상태 값은 저장소(repo) 외부에 보관됩니다. 쿠키가 영구 저장되므로 재시작해도 로그인을 다시 필요로 하지 않습니다.
폴러를 별도로 실행하려면 (예: Task Scheduler에서) 다음과 같이 합니다:
uv run python -m mcv_mcp.poller구성
[초호았다] The following code.
src/mcv_mcp/
config.py settings, URLs, state paths
client.py Chula SSO login, cookie persistence, throttled AJAX transport
parsers.py HTML -> dicts (pure functions, fixture-tested)
store.py SQLite snapshot + event log
sync.py orchestration + background poller
server.py MCP tool definitionsMVC의 마크업은 가장 취약한 규격이고, 그 부분은 parsers.py 안에 모아 두었습니다. 어떤 기능이 행을 반환하지 않게 되면 새 fixture를 캡처하고 (문서 링크) 해당 선택자를 수정하세요.
현재 상태
실제 계정으로 검증되었습니다: 로그인, 네 개의 모든 파서, 다운로드, 변경 감지 종단간 동작이 확인되었습니다. 대표 동기화에서 강좌 9개, 과제 20개 (모두 마감일 존재), 자료 112건, 성적 69건을 가져왔습니다. 다음 동기화에서는 변경이 0건으로 보고되어, 실제로 무언가 변하기 전까지 diff 로그는 조용히 유지됩니다.
알려진 제한사항:
성적 공지는 폴링으로 감지되며 푸시되지 않습니다. 성적이 나타나면 한 번의 폴링 간격 (기본값 30분) 이내에
grade_changed이벤트로 알 수 있습니다.현재 학기만 동기화됩니다.
sync_now에full=true를 전달하지 않으면 마찬가지로 현재 학기만 동기화됩니다.MCV의 마크업은 취약한 부분입니다. 어떤 파서가 행을0개 반환하기 시작하면 테스트 픽서쳐를 새로 저장하고 파서 셀렉터를 수정하세요 — 자세한 것은 docs/ENDPOINTS.md을 참고하세요.
개발
uv run pytestMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Canvas LMS and Gradescope, allowing users to query courses, assignments, modules, calendar events, and find relevant resources using natural language.59ISC
- FlicenseNot gradedqualityNot gradedmaintenanceEnables University of Toronto students to access academic data from ACORN and Quercus via AI assistants. It provides tools to retrieve course schedules, enrollment details, syllabi, assignments, and announcements.
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access Canvas LMS course content, including assignments, modules, announcements, and files, to help students manage their coursework.59ISC
- AlicenseNot gradedqualityDmaintenanceEnables AI to read MyCourseVille data locally, including assignments, deadlines, grades, announcements, and course materials.1MIT
Related MCP Connectors
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
Cross-AI personal memory. Save once in ChatGPT, recall in Claude, Mistral, Grok, or any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/aongzera/mcv-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server