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 快照中。每次同步都会与该快照进行比对,并将变化追加到 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 天内有哪些截止日期,最早的在前 |
| 已选课程,可选择限定一个学期 |
| 作业及其截止日期 + 描述 |
| 某一作业的完整详情 |
| 课程中发布过的文件(文件夹、名称、URL) |
| 在本地保存文件;并提取其中的 PDF 文本以便阅读 |
| 已发布的成绩 |
| 强制刷新( |
| 诊断信息:登录状态、上次同步以及各类信息应采用的行数 |
配置
变量 | 默认值 | 说明 |
| — | 你的 MCV 登录密钥 |
|
|
|
|
| 后台同步间隔(不小于 10 分钟) |
|
| 设为 |
|
| 数据库、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 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