Repository navigation
STU MCP v0.6.0 · 默认 HTTP CLI 与个人服务器
Pre-releaseSTU MCP v0.6.0 · 学生预览版
本版相对 v0.5.0 将默认认证改为纯 HTTP 与本人 CLI,并提供个人服务器私有接入。默认安装不需要 Playwright、Chromium 或桌面。继续以 GitHub prerelease 发布,学校协议变化、账号差异及未覆盖部署环境仍可能影响使用。
主要变化
- 同一个包,本机或个人服务器运行。 原 stdio 接入保留,新增私有 Streamable HTTP,共用一个人的账号、缓存和进程内草稿。服务器不需要安装 agent 或模型服务;HTTP 使用独立 Bearer、Host/Origin 校验和请求预算,不是公开 OAuth 或多用户服务。部署
- 无桌面登录。 教务、MySTU、报修通过 HTTPS CAS;雨课堂在本人终端显示官方二维码,由本人手机确认;对分易保留原微信授权回调,由本人隐藏输入返回链接。账号、密码、动态码及回调不进入 MCP 参数、聊天、命令行、环境变量或管道。认证
- WebVPN 纯 HTTP 密码/TOTP。 单次登录可由本人输入当前动态码;按需自动重登需另行明确保存已绑定令牌配置。遇到拒绝、图形挑战或绑定要求停止,不自动处理挑战。门户认证、资源目录和 OA 正文分别证明。
- 轻量 Docker 模板。 默认不安装浏览器、Xvfb 或远程桌面;单用户、单 worker、非 root、宿主回环端口及外置只读密钥。提供本地构建模板与独立 CI 镜像检查,未发布预构建镜像。容器
- 来源与状态边界。 CAS 与业务会话分开,保存及提交前核对退出/换账号代次。MySTU 身份和课程与 ELC/Campus 初始化分开,某个 Moodle 失败保留已核实的 API 会话。已登录 HTTP 请求抑制库日志中的票据、认证头和 Cookie,不改变其他线程日志。
- 签到连接安全修复。 配置代理不再关闭 HTTPS 证书校验,SignalR HTTPS/WSS 同时校验证书及主机名;旧关闭值归一为开启。后台控制和微信回调也使用请求范围的日志保护。使用不受信任抓包证书的旧配置会连接失败,不再静默绕过校验。
- 报修默认 HTTP WebForms。 七项工具继续展示实际完整表单,等本轮用户明确确认后只发送一次正式 POST,再核对新增单据、全部业务值、单号和处理状态。未知结果只读恢复,草稿及确认留在内存;独立加密保存报修会话。报修
- 保留已有查询与工具接口。 38 项工具的名称、参数、输入输出 schema 和注解保持兼容,报修描述更新为默认 HTTP 语义。OA 兼容实际完整文章路径、空白表头、正文容器及编号附件字段;关键字段歧义仍拒绝。
学校网络与远程接入是两段连接:SSH/Tailscale 让客户端访问 MCP,不会自动给服务器校园 DNS 或校园内网路径。诊断和业务请求发生在 MCP 宿主,不自动改 DNS、代理、TUN、hosts 或 TLS 校验。
安装或从 v0.5.0 升级
先安装 uv。当前通过本仓库发行文件安装,未发布到 PyPI:
uv tool install --python 3.12 https://github.com/0error0warning/stu-mcp/releases/download/v0.6.0/stu_mcp-0.6.0-py3-none-any.whl已有 v0.5.0 或更早版本时使用:
uv tool install --force --python 3.12 https://github.com/0error0warning/stu-mcp/releases/download/v0.6.0/stu_mcp-0.6.0-py3-none-any.whl
stu-mcp --version
stu-mcp connect codex --apply把 codex 换成当前客户端。安装保留数据目录、缓存、个人资料和已有配置;不要删数据、清空其他 MCP 配置或更换密钥后端。重新加载 MCP 或重启客户端,再调用 get_capabilities 核实实际连接。已有学校会话可能过期,按需单独登录,不能把安装成功当作来源已可读。
对分易旧后台不会热替换:需要加载新版时先暂停监听、退出旧服务,再重新打开并核对原账号及课程,按需恢复监听。原已授权持续计划仍按原规则恢复,升级或登录不创建新计划。旧设置页需关闭后重新运行 stu-mcp setup。使用导出技能的用户按需重新生成资源,使本机 Python 路径与安装环境一致。
默认流程无需重新安装浏览器。 已有 Chromium 可以保留;只有本人明确选择 --browser 兼容或可选离线 PNG 渲染时才需相应依赖。详细升级
在 MCP 宿主同一账号、数据目录和凭据后端中由本人执行:
stu-mcp login mystu
stu-mcp login yuketang
stu-mcp login repair
stu-mcp login webvpn
stu-mcp login duifene
stu-mcp login jw --allow-http-callback敏感输入要求真实 TTY、隐藏输入;雨课堂仍需手机确认,对分易仍需本人微信授权。HTTP 遇到未知挑战停止,不自动转浏览器或再次提交密码。
教务 --allow-http-callback 只允许本次官方 HTTP 票据回调,密码仍发 HTTPS SSO。持续兼容 stu-mcp transport --jw-http on 与 OA stu-mcp transport --oa-http on 是两个独立、默认关闭的本地选项。OA 仅允许认证后目录核实的固定 HTTP 8118 路由;明文传输可能暴露票据、会话或内容,必须由本人明确选择,不能互相借用许可。两个开关均不关闭 TLS 校验,密码与 TOTP 始终只走 HTTPS。
已验证和未验证
Windows / Python 3.12 本机最终完整套件 1938 项通过、4 项跳过,包含 TLS 与进程清理回归。Ruff、无浏览器依赖的 wheel 隔离安装、真实 SDK 的 stdio / 回环 Streamable HTTP 及 38 项完整工具契约通过。发行 CI 覆盖 Linux、Windows、macOS 四组环境,以及独立的默认 Docker 镜像构建和离线启动检查;具体结果与范围见本次发行验证记录。
正式适配器已在当前账号的有界范围内验证:教务 HTTPS 学生主页、39 条成绩及当前考试表明确为空;MySTU 身份匹配、10 门课程与 ELC/Campus 部分资源、任务和详情;雨课堂 10 门当前学期课程及活动;报修独立登录、明确空列表、真实完整表单预览。WebVPN 密码/TOTP 及真实资源目录通过。详情和当时失败保留在HTTP 正式实现验收。
以下仍不能视为已验收:
- 新 HTTP 报修的真实正式提交与学校回执;单次提交和恢复以合成、回环测试覆盖,没有为验收额外建单。
- 受保护 OA 正文、WebVPN 自然到期后续登,以及更多账号和未知人工挑战。
- 容器内真实学校认证/业务、Tailscale/SSH 跨机端到端及所有客户端应用内使用;平台 CI、离线镜像启动及回环 SDK 测试不能代替这些验收。
- 对分易真实新课堂自动签到、完整学期课表自动取数、WakeUp / Google Calendar / Outlook 真实导入。
匿名 OA 已验证实际列表、正文和附件解析;这不等于受保护 WebVPN OA 已通过。缓存保留自己的核查时间,历史成功不代表当前在线。
发行文件
发行附件为 stu_mcp-0.6.0-py3-none-any.whl、stu_mcp-0.6.0.tar.gz 与 SHA256SUMS.txt。后者列出前两份文件的 SHA-256 校验值,下载后可核对文件是否与本次构建一致;它不是凭据文件。GitHub 自动源码归档与单独构建的 sdist 是不同文件。发行不含学校凭据、真实会话或个人页面。
公开发布回执
PR #9 已合并至 main,标签 v0.6.0 指向 86f6994c354e4afcaa428181095003e4c7aec50f,源码树与已检查的候选提交一致。最终发行附件已单独完成正式隔离安装验收,校验值见 SHA256SUMS.txt。
main Checks 和候选 Checks 均全部通过。候选各组全量测试如下,每组还执行 Ruff、构建和真实 SDK 的隔离发行检查:
| 环境 | 全量测试 |
|---|---|
| Ubuntu / Python 3.11 | 1892 passed,50 skipped |
| Ubuntu / Python 3.13,含 Chromium 兼容回归 | 1942 passed,0 skipped |
| Windows / Python 3.12 | 1892 passed,50 skipped |
| macOS / Python 3.12 | 1892 passed,50 skipped |
独立 Docker 检查已实际构建默认镜像,并通过禁网容器的版本、核心导入、无 Playwright、默认 HTTP 与离线状态检查。浏览器挑战测试为强制离线的合成页面,不访问学校;容器内真人学校业务与跨机部署的未验收边界仍按上文保留。