zju-mcp

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.

Category
Visit Server

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_idfile_path(本地绝对路径)、comment?(附言)
zju_retract_homework 撤回已提交的作业,回到草稿态(需老师允许撤回) activity_id

activity_id 来自 zju_list_todoszju_list_course_homework。提交是真实交付,交错了用 zju_retract_homework 撤回。


典型应用案例

案例一:一键消化一节课

课后不想回放两小时录像?让 AI 直接读转录,帮你把这节课嚼碎:

「把我今天《智能控制》那节课的转录拉出来,总结这节讲了什么、布置了什么作业,有没有点名或课堂小测。」

AI 会自动 zju_get_schedule 找到这节课的 sub_idzju_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,作者会配合下架。

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured