@powercess/yuketang-mcp
雨课堂(Yuketang / 雨课堂)MCP 服务器:把雨课堂网页端的能力封装成 AI 可直接调用的工具。
扫码登录一次,即可让 AI 助手读取课程、课件、课堂回顾、AI 思维导图、回放时间线与作业进度。
能做什么
| 工具 | 能力 |
|---|---|
ykt_login |
扫码登录(二维码直接在对话里显示) |
ykt_status |
检查会话有效性,确认登录的是哪个账号 |
ykt_logout |
清除本地会话 |
ykt_courses |
课程列表(按学期分组) |
ykt_classroom |
课程班级详情 |
ykt_activities |
课程活动时间轴(上课记录 / 作业 / 公告) |
ykt_lesson |
课时详情与课件清单 |
ykt_slides |
课件全量幻灯片 + 图片地址 |
ykt_lesson_summary |
课堂概览(课件、签到状态) |
ykt_replay_timeline |
回放时间线,含老师每次翻页 |
ykt_mind_map |
AI 生成的课堂思维导图 |
ykt_notes |
课堂笔记目录与正文 |
ykt_score |
学情分数构成 |
ykt_course_progress |
章节树 + 完成度 + 分数 + 截止时间 |
ykt_live |
正在上课 / 待开始考试 |
ykt_discussion |
课程公告与讨论区 |
全部为只读操作。 签到、答题、发弹幕等会产生副作用的行为不在此实现——那等于代替你本人操作。
安装
需要 Node ≥ 23.4 或 Bun ≥ 1.x。
npm install -g @powercess/yuketang-mcp
yuketang-mcp
本地开发:
npm install && npm run build # Node
bun run dev # Bun,直接运行 TypeScript,无需构建
接入 MCP 客户端
{
"mcpServers": {
"yuketang": {
"command": "npx",
"args": ["-y", "@powercess/yuketang-mcp"]
}
}
}
登录
雨课堂分四个区域,会话互不通用,登录时必须选对:
| region | 名称 |
|---|---|
standard |
雨课堂(默认) |
hetang |
荷塘雨课堂 |
changjiang |
长江雨课堂 |
huanghe |
黄河雨课堂 |
调用 ykt_login 会返回二维码,用微信或雨课堂 App 扫码确认即可。二维码有效期约 5 分钟。
也可以跳过扫码,用环境变量直接提供会话:
YKT_REGION=standard YKT_SESSIONID=<your-sessionid> yuketang-mcp
会话保存在 ~/.yuketang-mcp/(目录 0700、文件 0600),只存 sessionid,不存姓名或学号。
配置
| 环境变量 | 说明 |
|---|---|
YKT_REGION |
区域,配合 YKT_SESSIONID 使用 |
YKT_SESSIONID |
直接提供会话,跳过扫码 |
YKT_STATE_DIR |
会话保存目录,默认 ~/.yuketang-mcp/ |
使用提示
- 课件图片无需鉴权:
ykt_slides返回的图片地址可直接 HTTP 下载,不需要 Cookie。 - 判断「哪些页讲过」用回放时间线:课件接口的
visible字段恒为 true,没有区分度;ykt_replay_timeline的shownSlideIndexes才是实际展示过的页。 - 章节数据用
ykt_course_progress:它含完成度、分数与截止时间,比抽象的章节树更适合直接消费。 - 活动分页:
offset是每页条数而非跳过条数,page从 0 开始。
已知边界
- 雨课堂没有公开 API,本服务使用学生端接口。平台改版可能失效。
- 进入课堂实时内容需要先签到换取课堂令牌。本服务不代签到,因此只提供只读概览。
- 已完成的作业无法读取题面(平台返回无权限)。
- 未实现的能力:位置签到、动态二维码签到、考试作答、讨论发帖。
License
MIT