PaperBridge
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PaperBridgeFind FIN104 past exam papers, separate regular and resit, download the one I choose."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PaperBridge
供个人使用的西浦历年试卷检索与 PDF 保存工具,通过本地 MCP 接入 Codex、DeepSeek Harness。每位使用者使用自己的学校账号登录,文件保存在自己的电脑。
这是独立的非官方项目,只有试卷功能。无需油猴或 Computer Use。项目不提供共享账号、预置登录信息或试卷合集。
安装
先安装并打开一次 Codex 或 DeepSeek Harness,并准备 Chrome 或 Edge。下面的一键脚本会自动处理 Node.js,无需提前安装 Node、Git 或 Python。
macOS / Linux,打开终端,粘贴:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/shanyuzhang/xjtlu-paperbridge/main/install.sh)"Windows,打开 PowerShell,粘贴:
irm https://raw.githubusercontent.com/shanyuzhang/xjtlu-paperbridge/main/install.ps1 | iex脚本会检测 Node.js 20+;缺少时下载 Node 24 LTS,使用固定的官方 SHA-256 校验,安装到 ~/.paperbridge/node,不改系统 Node 或系统 PATH,也不需要管理员权限。随后安装 PaperBridge,自动接入检测到的 Codex / Harness,并打开学校登录窗口。所有安装方式均默认有哪个就接入哪个,无需逐个确认;修改已有配置前仍会自动备份。
由本人登录、进入 Past Exam Papers、确认协议并搜索一次课程代码后,窗口会自动关闭。完全退出并重新打开 AI 客户端,就可以问「帮我找 FIN104 的历年试卷」。重新运行相同命令即可更新。
Windows 发布脚本采用 ASCII 包装,避免 PowerShell 5.1 解码中文乱码;可读源码 与 macOS / Linux 脚本 均在仓库中。没有浏览器或 AI 客户端时会提示先安装,不会自动创建账号或接受学校协议。
已有 Node.js 的安装方式
如果已经有 Node.js 20+,也可以直接使用 npm:
npx -y xjtlu-paperbridge@latest setup如果让 AI 代为安装,使用下面这一行,自动接入检测到的 Codex / Harness。安装后重启客户端,再由本人完成试卷库登录:
npx -y xjtlu-paperbridge@latest setup --no-login安装器将程序放到 ~/.paperbridge/app,修改前备份客户端配置,保留其他 MCP 服务。npm 包只含程序和说明,不包含会话或试卷。升级时重新运行同一行命令,再重启 AI 客户端即可。
AI 在没有 Node 的电脑上代装时,可在运行脚本前设置 PAPERBRIDGE_NO_LOGIN=1,先完成安装和配置;后续通过 AI 的登录工具由本人连接试卷库。脚本不会要求在终端输入学校密码。
可用 PAPERBRIDGE_CLIENTS=codex 或 PAPERBRIDGE_CLIENTS=deepseek-harness 只连接其中一个;默认连接检测到的两者。
也可以从 GitHub 安装源码:
git clone https://github.com/shanyuzhang/xjtlu-paperbridge.git
cd xjtlu-paperbridge
npm ci --ignore-scripts
node bin/paperbridge.js setup --yes --clients codex,deepseek-harness --no-login完全退出并重开 AI 客户端,问「帮我找 FIN104 的历年试卷,区分正考和补考,下载我选的那份」。首次使用,工具会提示本人登录。
升级时,在仓库目录运行 git pull --ff-only、npm ci --ignore-scripts,再运行相同的 setup 命令,最后重启 AI 客户端。
Related MCP server: examintel-mcp
本人登录
使用一键脚本安装后,可直接让 AI 调用 paperbridge_login。已有系统 Node / npx 时也可以运行:
npx -y xjtlu-paperbridge@latest login
npx -y xjtlu-paperbridge@latest status源码目录内使用:
node bin/paperbridge.js login
node bin/paperbridge.js status在专用普通 Chrome / Edge 窗口完成学校登录,点击 Past Exam Papers,由本人阅读确认试卷使用协议,再搜索一次课程代码。会话保存后窗口自动关闭。AI 也能用 paperbridge_login 打开窗口,再检查 paperbridge_status。
日常浏览器和其他程序的登录不会自动同步到 PaperBridge。会话过期时重新登录;不需要向 AI 发送密码、Cookie 或 token,也不要分享本机数据目录。学校网络不可达时检查自己的校园网络或 VPN。
MCP 工具
直接对 AI 说「下载 FIN104 的试卷到当前文件夹」,会保存到本次对话打开的项目下,例如 你的项目/FIN104/试卷.pdf。也可以说「保存到桌面的期末复习文件夹」。AI 不知道当前项目路径时,会先询问保存位置;下载完成后会给出实际文件路径。
下载工具必须传入绝对路径 download_dir,不会再自动回退到 Documents。切换项目时,每次使用当前对话的项目目录;安装 PaperBridge 的位置不影响保存位置。升级后需完全退出并重新打开 AI 客户端,以刷新工具参数。
工具 | 用途 |
| 检查本人会话及登录进度 |
| 打开本人专用登录窗口,立即返回 |
| 按 |
| 按 |
| 按 |
有下一页时继续检索。相同标题可能对应正考和补考,选择前应读取详情。下载只处理当前账号有阅读权限的学校 PDF,检查文件头和结束标记,限制 60 MB;相同内容去重,不覆盖同名不同内容。工具只返回元数据和本地路径,不返回试卷正文或临时签名 URL。
保存 PDF 属于本地写盘操作。客户端请求审批时允许该次下载即可;禁止审批的只读模式可能拒绝保存。
本地文件与配置
会话和配置:
~/.paperbridge/,含session.json、login-browser/和config.json。AI 下载:本次对话的项目目录,或用户指定目录,其下按课程代码归档。
命令行下载:默认当前命令运行目录;已有自选目录配置或
PAPERBRIDGE_DOWNLOADS时使用该默认值。download --downloads <目录>只指定本次保存位置,不更改后续下载。setup --downloads <目录>设置命令行默认目录;AI 下载始终以本次传入的download_dir为准。PAPERBRIDGE_HOME覆盖数据目录。PAPERBRIDGE_BROWSER可指定chrome、msedge或chromium。默认查找系统 Chrome / Edge。
学校会话属于敏感信息。仓库不包含本人会话、浏览器配置、PDF、.env 或任何真实凭据;安装后也不自动读取其他程序的会话。每位使用者须自行确认学校条款及资料使用范围,不要公开转发下载的试卷。
命令行示例,先检索取得 ID,再下载(将 <记录ID> 替换为检索结果):
npx -y xjtlu-paperbridge@latest download <记录ID>
npx -y xjtlu-paperbridge@latest download <记录ID> --downloads "/absolute/path/期末复习"手动接入
运行 node bin/paperbridge.js config 获取这台电脑的准确 JSON。Codex 使用:
[mcp_servers.paperbridge]
command = "/absolute/path/to/node"
args = ["/absolute/path/to/bin/paperbridge.js", "serve"]DeepSeek Harness 使用 DSH_HOME/cordis.patch.yml,未设置 DSH_HOME 时为 ~/.dsh/cordis.patch.yml。将以下 patch 合并到已有列表,路径换成本机绝对路径;需使用包含官方 MCP 客户端插件的新版 Harness。
- insert:
- id: mcp-paperbridge
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: paperbridge
transport: stdio
command: /absolute/path/to/node
args: [/absolute/path/to/bin/paperbridge.js, serve]验证与开发
npm test
node scripts/verify-live.mjs --course-code FIN104自动测试使用本地假学校接口及真实 MCP transport,验证检索、权限拒绝、PDF 保存、去重、独立登录和配置合并。真实验证命令需要本人登录,并会保存一份选定试卷及检查 PDF 页数。它不打印会话或题目正文。
2026-10-18,PaperBridge 0.1.0 在 macOS 上通过 17 项自动测试;Codex CLI 和 DeepSeek Harness 均通过独立的 paperbridge_* 工具完成 FIN104 检索(6 条)、详情及 PDF 下载。独立解析确认所选试卷为 426316 字节、6 页。Windows / Linux 尚未真机验证。协议或学校接口变化后可能需要更新;保存的会话过期时,状态检查会要求本人重新登录。
0.1.1 增加一键安装脚本,自动测试共 21 项。macOS 已实际验证从没有系统 Node 的环境下载、校验并使用独立 Node,带空格的安装路径也能启动 5 个 MCP 工具。Windows 脚本已检查 UTF-8 包装与固定校验值,尚未在 Windows 真机验证。
0.1.2 支持按当前项目或自选文件夹下载,MCP 下载必须提供绝对保存路径,命令行默认当前目录。24 项自动测试通过,覆盖中文和空格目录、不同目标的并发下载、缺少目录时拒绝请求,以及单次路径设置不修改默认配置。本次真实 Codex 验证在学校会话过期处停止,未重新进行真实试卷下载。
0.1.3 将直接运行 setup 也改为自动接入检测到的 Codex / Harness,无需逐个确认,已有配置仍在修改前自动备份。可用 --clients 限定客户端,旧的 --yes 命令继续兼容。28 项自动测试通过。
MIT 许可,保留复用代码的作者信息,见 LICENSE。
Available Tools
5 toolspaperbridge_detailsARead-only
读取检索得到的试卷详情,返回学年、学期和考试类型(Final 正考 / Resit 补考),一次最多 20 份。用于区分同年同名的试卷,不读取题目正文。
| Name | Required | Description | Default |
|---|---|---|---|
| record_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the description's added context is what earns credit: the 20-record cap per call, the exact return fields, and the explicit statement that question bodies are not read. It does not mention error behavior or what happens with invalid/nonexistent IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the read action plus return fields come first, then the distinguishing purpose, then the negative scope. No filler, and everything needed to route the call is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly names the returned fields, and with annotations covering safety it need not re-explain read-only behavior. It does not address behavior when some of the up-to-20 IDs are missing or invalid, which is a minor gap for a batch lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by stating the 20-item ceiling (matching maxItems) and, more importantly, indicating that the record_ids originate from a prior search rather than being arbitrary identifiers. The numeric-string pattern is left to the schema, but the origin constraint is real added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (读取检索得到的试卷详情) and enumerates the returned fields: 学年、学期、考试类型. It also explicitly contrasts with the content-fetching sibling by noting 不读取题目正文, so an agent can separate it from paperbridge_download without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage context (用于区分同年同名的试卷) and implies a workflow prerequisite by scoping input to 检索得到的 records, i.e. IDs must come from paperbridge_search. It does not explicitly name or exclude the download sibling as an alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paperbridge_downloadA
将检索结果中选定的试卷 PDF 保存到本人电脑,按课程代码归档。record_ids 必须来自 paperbridge_search,一次最多 20 份,按顺序下载并校验 PDF;不返回 Cookie、token 或临时签名链接。
| Name | Required | Description | Default |
|---|---|---|---|
| record_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: files are written locally (consistent with readOnlyHint=false), downloads happen in order, each PDF is verified, and the response deliberately excludes cookies, tokens, and signed URLs. The remaining gap is what a failed/partial verification looks like and whether re-downloads are skipped, but the disclosure is well above the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause; every following clause (provenance, cap, ordering, verification, credential non-return) adds information. It is dense and bundles several concerns into one long sentence, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers source of IDs, batch limit, ordering, verification, and output content restrictions — everything needed to invoke it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 0% schema description coverage, so the description carries the burden — it supplies the provenance constraint (must come from paperbridge_search) and restates the 20-item cap. It does not explain the numeric-string pattern, but the schema already enforces that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource: download selected exam-paper PDFs from search results and archive them locally by course code. The scope ('from search results', 'to your own computer') clearly separates it from paperbridge_search and paperbridge_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: record_ids must originate from paperbridge_search, and at most 20 per call. It gives a clear precondition and a batch limit, though it does not state any when-not-to-use case (e.g. already-downloaded items) or name an alternative tool for bulk retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paperbridge_loginA
为本人打开试卷库专用登录窗口。本人完成学校 SSO、阅读并确认试卷使用协议,再搜索一次课程代码。立即返回,随后用 paperbridge_status 检查;不代填密码、不自动同意协议。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=false, openWorldHint=true, and destructiveHint=false, but the description adds critical behavior the annotations do not cover: it returns immediately, does not fill in passwords on the user's behalf, and does not auto-agree to the usage agreement. This human-in-the-loop, non-blocking behavior is essential for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, starting with the tool's core action and then covering the required human steps, immediate return, follow-up tool, and constraints. Every clause earns its place with no redundant restatement of the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema) and the annotation coverage for openness and non-destructiveness, the description is complete. It tells the agent exactly what will happen, what the user must do, and what to do next, leaving no critical gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to clarify. Per the evaluation baseline for 0-parameter tools, a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '打开试卷库专用登录窗口' (open the dedicated login window for the exam paper library). It also distinguishes the tool from siblings by naming paperbridge_status as the follow-up checker, so an agent can tell this apart from search, download, or details without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: the user completes SSO, reads and confirms the agreement, searches a course code, and then the agent should check with paperbridge_status. It lacks an explicit when-not-to-use condition (e.g., if already authenticated), so it is clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paperbridge_searchARead-only
按课程代码检索本人有权访问的西浦历年试卷,返回标题、学年和 record_id。有 next_page 时继续翻页,不猜测试卷 ID。按正考/补考或学期选择前调用 paperbridge_details,不能只看同名标题。未登录先调用 paperbridge_login。
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| course_code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered; the description adds real value beyond that by disclosing the auth prerequisite (login first), the access-limited result scope, and the pagination contract via next_page. It does not discuss rate limits or result caps, which is a minor gap rather than a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded clauses, each carrying a distinct instruction (scope, fields, paging, selection, auth) with no filler. The terse telegraphic style is efficient, though the ordering of the login prerequisite last slightly buries an action the agent must take before anything else.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by listing the returned fields, and it covers scope, pagination, downstream selection, and auth. The only real omission is the meaning of the page/page_size inputs, so an agent can call it correctly but must infer paging granularity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description has to carry parameter meaning. It clarifies course_code's purpose and hints at paging behavior through next_page, but page and page_size (with their 1-100 bounds) are never explained, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (retrieve past exam papers by course code) plus scope (only ones the caller has access to) and even names the return fields (title, academic year, record_id). It explicitly distinguishes itself from paperbridge_details by defining the selection step as details' job, so an agent can tell the siblings apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operational rules: continue paging when next_page is present, do not guess paper IDs, call paperbridge_details before choosing by 正考/补考 or semester rather than trusting a same-named title, and call paperbridge_login first when unauthenticated. Both when-to-use and when-to-defer are covered with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paperbridge_statusBRead-only
检查西浦图书馆历年试卷库独立登录状态和登录进度。PaperBridge 使用独立的本人会话。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description's added value is the note that PaperBridge uses an independent per-user session, which tells the agent the status is caller-specific rather than global. It says nothing about polling cadence, whether concurrent login attempts matter, or what the returned progress represents — meaningful gaps for a tool whose whole purpose is watching login progress.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the resource and the session caveat front-loaded. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description is the only source of detail about what the agent will get back. It identifies the subject (login status and progress) but never describes what those fields look like or their possible states, leaving the agent to guess on the return value. Adequate but with a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema carries no semantic burden and 4 is the baseline. The description correctly implies all state is resolved from the caller's session rather than from arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (检查) plus resource (登录状态和登录进度) scoped to 西浦图书馆历年试卷库, so the agent knows this is a status read rather than a login action. It does not name or contrast with the sibling paperbridge_login, which is the tool it is most easily confused with, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative routing. The word 进度 implies polling during login, but the description never says to call this while paperbridge_login runs, nor what to do with the result. Usage is only faintly inferable from the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
paperbridge_details - First observed
paperbridge_download - First observed
paperbridge_login - First observed
paperbridge_search - First observed
paperbridge_status
TDQS
Scored across 5 tools
Each tool targets a distinct step or resource: login, status, search, details, and download. Their boundaries are reinforced by cross-references (e.g. details needed before filtering, record_ids must come from search), leaving no realistic confusion.
All five tools share the same `paperbridge_` prefix followed by a short identifier (search, details, download, status, login). The suffixes mix verbs and nouns (download/search vs details/status), a minor deviation but the pattern remains predictable and readable.
Five tools map cleanly onto a search-inspect-download workflow with authentication states. Each tool earns its place with no redundancy or bloat.
The surface covers the full lifecycle: authenticating (login/status), discovering (search), disambiguating (details), and retrieving (download). No obvious gaps remain for this domain.
Related MCP Connectors
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
Hosted Web Crawler MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Remote MCP server for deterministic educational practice-assessment score conversions.
Related MCP Servers
- FlicenseAqualityBmaintenanceA local MCP server that lets Claude Code operate the PolyU eStudent portal to check grades, timetable, exams, search subjects, and manage course registration through natural language.9-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that indexes exam PDFs and HTML documents for semantic search, topic frequency analysis, and study plan generation, fully local and private.MIT
- AlicenseNot gradedqualityBmaintenanceRead-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.23MIT
- AlicenseBqualityCmaintenanceEnables natural-language, read-only access to a user's own learning-management account for courses, assignments and deadlines, lecture attendance, notices, grades, and syllabus evidence, including reading page/slide/cell locations inside PDF, Office, HWP/HWPX, HTML, and ZIP attachments. Runs locally over stdio or remotely over OAuth-protected Streamable HTTP for desktop and mobile clients, and can compare changes against a locally encrypted baseline.19MIT