zju-mcp
Enables interaction with Zhejiang University's learning platform (学在浙大 / 智云课堂) via MCP tools, allowing natural language commands to check todos, view schedules, fetch lecture transcripts, and submit homework.
README
vibe-learning-in-zju(zju-mcp)
把「学在浙大 / 智云课堂」的一批能力封装成 MCP 工具,供 Claude Code、Cursor、或任意 MCP 客户端按需调用—— 用一句自然语言就能查待办、看课表、拉课堂语音转录、甚至提交作业。
- 单文件、零第三方依赖:只用 Node 内置能力(
fetch/FormData/crypto等),一个zju-mcp.mjs跑起来即可。 - 本地运行、凭据不上云:登录逆向与 RSA 加密都在你本机完成,密码不明文上行,
.env不进版本库。
⚠️ 先读免责声明:本项目仅供个人学习与自用,逆向自公开的网页登录流程。你需自行对使用行为负责,遵守学校相关规定;请勿用于批量抓取、代刷、扰乱平台等行为。写操作(提交/撤回作业)会真实改动你的学在浙大账户,务必谨慎。
快速开始
# 1. 克隆到本地
git clone https://github.com/EviterLesRoses2/vibe-learning-in-zju.git
cd vibe-learning-in-zju
# 2. 配置凭据:复制模板并填入你的学号 / 密码
cp .env.example .env
# 然后用编辑器打开 .env,填 ZJU_USER / ZJU_PASS
要求 Node 18+(用到内置 fetch)。用 node -v 确认。
在 Claude Code / Cursor 等客户端的 mcpServers 配置里加一条(把路径换成你实际 clone 的绝对路径):
{
"mcpServers": {
"zju": {
"command": "node",
"args": ["/path/to/vibe-learning-in-zju/zju-mcp.mjs"],
"env": { "ZJU_USER": "你的学号", "ZJU_PASS": "你的密码" }
}
}
}
接好后在对话里直接说「列一下我的浙大待办」「今天课表」「把今天第二节课的转录给我」即可触发。
工具一览
只读工具
| 工具 | 能做什么 | 参数 |
|---|---|---|
zju_list_todos |
列出待办的作业/考试/测验/问卷,含课程名、类型和截止日 | 无 |
zju_list_courses |
列出「我的课程」里的所有课程,含课程 id、名称、代码、学期、教师、学习进度 |
keyword?(按课程名/代码过滤)、status?(ongoing/notStarted/ended) |
zju_list_course_homework |
列出某门课下的所有作业,含每个作业的 activity_id、状态、成绩和老师评语 |
course_id(必填)、include_submission?(默认带上提交详情/成绩) |
zju_get_schedule |
查智云课堂某天/某段时间的课表,含每节课的 sub_id、老师、教室、时间 |
date?、end_date?(YYYY-MM-DD,省略=今天) |
zju_get_transcript |
拉取某节课的语音识别转录(逐段中文、带时间戳) | sub_id(必填)、max_segments?、with_translation? |
典型链路:zju_get_schedule 拿到某节课的 sub_id → 传给 zju_get_transcript 取转录。
写操作(会真实改动学在浙大,谨慎使用)
| 工具 | 能做什么 | 参数 |
|---|---|---|
zju_submit_homework |
把本地文件作为作业提交 | activity_id、file_path(本地绝对路径)、comment?(附言) |
zju_retract_homework |
撤回已提交的作业,回到草稿态(需老师允许撤回) | activity_id |
activity_id 来自 zju_list_todos 或 zju_list_course_homework。提交是真实交付,交错了用 zju_retract_homework 撤回。
典型应用案例
案例一:一键消化一节课
课后不想回放两小时录像?让 AI 直接读转录,帮你把这节课嚼碎:
「把我今天《智能控制》那节课的转录拉出来,总结这节讲了什么、布置了什么作业,有没有点名或课堂小测。」
AI 会自动 zju_get_schedule 找到这节课的 sub_id → zju_get_transcript 取全程转录,然后替你产出:
- 本节要点:老师讲的核心内容浓缩成几条。
- 作业提醒:口头布置的作业 / 截止时间。
- 点名与小测:转录里出现的点名、随堂小测、加分提问等,别再错过平时分。
案例二:全自动完成作业
从「看到作业」到「拿到分数」全程交给 AI:
「看看《数字信号处理》这门课有哪些没交的作业,帮我做完并提交,交完把分数也查一下。」
一条链路跑通:
- 抓作业 —
zju_list_courses定位课程 →zju_list_course_homework列出未交作业,读出题目要求。 - 做作业 — AI 根据要求生成解答,写成文件存到本地。
- 提交 —
zju_submit_homework把文件交上去,返回submission_id与读回确认。 - 查分 — 等老师批改后,
zju_list_course_homework(带include_submission)读回成绩和评语。
⚠️ 这一步会真实提交到你的账户。建议先让 AI 把生成的答案给你过目,确认无误再让它提交;交错了可用
zju_retract_homework撤回。
前置约束
- 必须在国内网络的本机运行:
courses.zju.edu.cn与*.cmc.zju.edu.cn只对国内 IP 开放,境外(云端 / 远程 agent)抓不到。 - Node 18+(用到内置
fetch)。 - 凭据二选一:填
.env,或写进 MCP 客户端配置的env块。
免责声明
- 本项目为个人学习用途,逆向对象为公开可访问的网页登录与接口流程,不含任何绕过鉴权、爬取他人数据的能力。
- 使用者需自行遵守浙江大学及相关平台的使用规定,因使用本工具产生的一切后果由使用者自行承担。
- 提交/撤回作业等写操作会真实改动你的账户数据,请在充分理解语义后使用。
- 如学校或平台方认为不妥,请提 issue,作者会配合下架。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。