Skip to main content
Glama

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": "你的密码" }
    }
  }
}

接好后在对话里直接说「列一下我的浙大待办」「今天课表」「把今天第二节课的转录给我」即可触发。


Related MCP server: chaoxing-mcp

工具一览

只读工具

工具

能做什么

参数

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:

「看看《数字信号处理》这门课有哪些没交的作业,帮我做完并提交,交完把分数也查一下。」

一条链路跑通:

  1. 抓作业 — zju_list_courses 定位课程 → zju_list_course_homework 列出未交作业,读出题目要求。

  2. 做作业 — AI 根据要求生成解答,写成文件存到本地。

  3. 提交 — zju_submit_homework 把文件交上去,返回 submission_id 与读回确认。

  4. 查分 — 等老师批改后,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,作者会配合下架。

Available Tools

7 tools
zju_get_scheduleA

获取「智云课堂」某一天(或日期区间)的课表,含每节课的 sub_id、课程名、老师、教室、上课时间,以及 status_label(“回放”表示语音转录已生成)。返回的 sub_id 可传给 zju_get_transcript。只读。

Inputs: date, end_date.

zju_get_transcriptA

获取「智云课堂」某节课的语音识别转录(带时间戳的逐段中文文本)。需要 sub_id(来自 zju_get_schedule 的 courses[].sub_id)。仅“回放”状态的课有转录。只读。

Inputs: sub_id (required), max_segments, with_translation.

zju_list_course_homeworkA

列出某门课程下的【全部作业】——已提交、未提交、已结束的都在内,并给出每个作业的 activity_id(可直接传给 zju_submit_homework / zju_retract_homework)。相比只看未完成待办的 zju_list_todos,这个能操作「已完成」的作业。当 include_submission=true(默认)且老师已批改/公布时,返回顶层 score(我的得分)及 submission 里的 score/final_score/graded_at/instructor_comment(老师评语);未公布则 score 为 null。注意顶层 weight_percent 是该作业在总评里的分值占比,不是得分。需要 course_id(来自 zju_list_courses 的 courses[].id,或课程 URL /course/{id}/ 里的数字)。只读。

Inputs: course_id (required), include_submission.

zju_list_coursesA

列出「学在浙大」我的全部课程(对应网页「我的课程」),含课程 id、课程名、课程代码、学年、学期、开课学院、授课教师、学习进度。返回的 id 就是课程 URL /course/{id}/ 里的数字,可传给 zju_list_course_homework 查该课作业。只读。

Inputs: status, keyword.

zju_list_todosA

列出「学在浙大」(courses.zju.edu.cn) 的全部待办(作业/考试/测验/问卷),含课程名、类型与东八区截止日期。注意:只含「未完成」的待办,已提交/已完成的作业不在此列 —— 要看某门课的全部作业(含已交)请用 zju_list_course_homework。只读,无参数。

Inputs: no named parameters.

zju_retract_homeworkA

【写操作】撤回某作业已提交的版本,使其回到草稿态(可重新修改提交)。需要 activity_id。仅当老师开启了 allow_retract 时可撤回;若当前已是草稿或无提交记录会原样告知。

Inputs: activity_id (required).

zju_submit_homeworkA

【写操作,会真实提交】把本地文件作为作业提交到「学在浙大」。需要 activity_id(作业 id,可从 zju_list_todos 的 todos[].id 取,或作业页 URL 里 #/后面的数字)和 file_path(本地文件绝对路径)。提交后会真实交付给老师;若老师开启了允许撤回,可用 zju_retract_homework 撤回改交。返回提交结果与读回确认(submission_id / 文件名 / 提交时间)。

Inputs: file_path (required), activity_id (required), comment.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: schedule retrieval, transcript retrieval, course listing, homework listing, todo listing, homework submission, and homework retraction. No overlap or ambiguity exists.

    Naming Consistency5/5

    All tools follow a consistent 'zju_verb_noun' pattern (e.g., zju_get_schedule, zju_list_courses, zju_submit_homework), making naming predictable and easy to understand.

    Tool Count5/5

    Seven tools is a well-scoped set for a university platform server, covering essential operations without being overly large or too small.

    Completeness4/5

    The tools cover core workflows (scheduling, homework management, course listing). Minor gaps exist, such as no tool for viewing detailed course info or announcements, but the main tasks are supported.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Enables AI assistants to interact with the Chaoxing (超星学习通) platform through MCP, supporting teacher and student modes for course management, assignments, exams, sign-ins, and file operations.
      16
      2
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Read-only MCP server for Chaoxing (学习通) that logs into a user's account and exposes their class schedule, enrolled courses, course materials downloads, homework status, exam schedules and scores, chapter task-point progress, notices, and personal cloud drive files. Enables any MCP client to answer natural-language questions about a student's coursework without submitting anything or modifying account data.
      23
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI assistants to browse your own university courses by downloading files, slides, announcements, deadlines, grades and lecture transcripts to your machine, then answering questions and searching across them through MCP tools. It logs in with your own account and refreshes only what changed.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI applications supporting MCP to log into a university academic affairs system and query schedules, absences, grades, and leave records through natural-language conversation. It also lets users submit or withdraw leave requests and plan and save monthly work-study attendance, with built-in confirmation cues for destructive actions.
      1
      MIT