Skip to main content
Glama
aongzera

MyCourseVille MCP Server

by aongzera

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 快照中。每次同步都会与该快照进行比对,并将变化追加到 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 的最新幻灯片。”

工具

工具

它回答的问题

whats_new

自某个时间点以来新增/发生变化的作业、材料和成绩

list_upcoming_deadlines

接下来 N 天内有哪些截止日期,最早的在前

list_courses

已选课程,可选择限定一个学期

list_assignments

作业及其截止日期 + 描述

get_assignment

某一作业的完整详情

list_materials

课程中发布过的文件(文件夹、名称、URL)

download_material

在本地保存文件;并提取其中的 PDF 文本以便阅读

list_grades

已发布的成绩

sync_now

强制刷新(full=true 表示全校学期)

auth_status

诊断信息:登录状态、上次同步以及各类信息应采用的行数

配置

变量

默认值

说明

MCV_USERNAME / MCV_PASSWORD

你的 MCV 登录密钥

MCV_LOGIN_METHOD

itchula

itchula 使用 IT Chula SSO 按钮,mcv 使用普通表单

MCV_POLL_MINUTES

30

后台同步间隔(不小于 10 分钟)

MCV_POLL_ENABLED

1

设为 0 可禁用后台自动刷新

MCV_STATE_DIR

%LOCALAPPDATA%\mcv_mcp

数据库、Cookie 和下载文件的保存位置

状态数据保存在仓库之外。并且 Cookie 也会保留,因此重启后不需要重新登录。

要单独运行同步器(例如放在“计划任务程序”中),请使用:

uv run python -m mcv_mcp.poller

布局

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 definitions

使用说明

Status

已在使用真实账户完成端到端验证:登录、全部四个解析器、下载和变更检测。一次有代表性的同步拉取了 9 门课程、20 个作业且每个都有解析出的截止日期、112 份材料和 69 个评分项;其后的同步报告了零变更,因此差异日志在真正发生变化之前会保持不动。

已知以下限制:

  • 成绩发布是通过轮询检测到的,不是推送。 某个成绩出现后,会在一个轮询间隔(默认 30 分钟)内以 grade_changed 事件的形式出现。

  • 默认只同步当前学期,除非你在 sync_now 中传入 full=true

  • MCV 的标记本身是不稳定的。 如果某个解析器开始返回零行,请抓取一份新的测试固件(见 docs/ENDPOINTS.md)并在该文件中修复选择器。

Development

uv run pytest
Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

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/aongzera/mcv-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server