Skip to main content
Glama

STU MCP

开发分支新增 STU 外卖查询与选餐:7 个新工具,支持按实际配送批次查本部/东校区餐段、商家、菜单、规格和选餐清单, 不提交订单或支付。需在 MCP 宿主单独导入加密配置。用法与验证范围

这个项目的前身,是我在「养」Hermes agent 时,从零搭起来的一个自用信息聚合器。学校通知、课程、作业,散在不同地方的信息,我都想慢慢接进去。自己用的版本里,甚至还接入了微信聊天记录。

我折腾它的原因,是希望 agent 在帮我做事时,能拿到足够的个人上下文:我最近在忙什么、有什么通知要看、哪些事情还没做完。和我有关的信息,如果它能在需要时自己查到,我就能少重复一些背景,也不用总在几个网站和聊天窗口之间来回复制粘贴。

后来,我把里面和汕大有关的部分整理成了 STU MCP,想让其他同学也能接到自己常用的 agent 上。它负责找信息、读信息,怎么理解和整理,交给你自己的 agent。

微信聊天记录接入留在自用版本里,公开版不包含。用这里的功能也不需要先装 Hermes,或者另外配一份模型 API key。

想试试的话

找一个能在你电脑上执行命令的 agent,把这两行发给它:

帮我安装 STU MCP:https://github.com/0error0warning/stu-mcp
按 docs/install.md 接入当前客户端,保留已有配置并验证公开查询。按安装版本说明登录;认证信息由我本人输入,不发给 agent。

单独复制这段 prompt · 安装细节

装好以后,可以直接问它:

  • “最近有什么适合我报名的竞赛?把截止时间和原文找出来。”

  • “整理一下 MySTU 接下来两周的作业,按截止时间排一排。”

  • “树洞里有人聊过这门选修课吗?搜一下大家怎么说。”

Related MCP server: klax

现在能查些什么

来源

能查的东西

要登录吗

学校官网、学生处

新闻、通知、活动预告、校园服务入口

不用

OA

近期通知、正文和附件,PDF / 文本附件也能读

先匿名读取,受限时再用 WebVPN

教务

自己的成绩、学分加权统计、考试安排

需要

MySTU / Moodle

课程、作业、测验、资料链接、个人日程

MySTU 登录;ELC / Campus 分别核验

雨课堂

课程、作业、测验、课程公告

需要

狐友

汕大树洞里的公开帖子、评论和楼中楼回复

不用

充电设备

按位置查设备空闲、占用、故障数量,查看每个插座的状态

不用

对分易

多课程监听、启停与签到结果,本地网页和 MCP 共用后台;新课堂提交仍待实测

原微信回调,可用宿主网页或终端

桑浦山宿舍报修

检查缺项、填表、展示完整预览,等本人确认后提交一次

独立 HTTP 登录

校园连接诊断

分别检查业务站、统一认证、直连、DNS和本机代理

不用

学校入口批量检测

批量比较本机DNS、可选公共DNS和匿名直连,区分解析失败与连接失败

不用

也可以记一下本地待办,或者告诉 agent 你的学院、专业和兴趣。它们都不是必填项,本地勾选“完成”也不会替你向学校提交作业。

查到的信息会带来源和缓存时间。想看最新消息时,让 agent 先刷新;没查到也可能只是这次没取全。狐友里是同学们的讨论,学校的正式要求还是要看 OA 或学校原文。狐友怎么查

本版包含充电查询,由本机 MCP 直接请求充电平台,按设备缓存,没有网站或自建服务器依赖。现有清单包含 14 台已核验设备,不代表全校完整清单;离线和旧数据会单独标记。充电查询用法

校园连接按服务处理:r和一网通办先查自身入口,宿舍报修需要时核实校园接入,SSO和ITS各协议独立判断。默认诊断只查所需端点,本机代理对照按需开启;普通读取复用连接,同批次暂时跳过连接失败的主机,继续读取其他来源。它不自动改代理或接入远程隧道。规则与诊断

自己动手安装

先装好 uv,然后运行。这里以 Codex 为例:

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
stu-mcp connect codex --apply

第二行换成你用的客户端,比如 claude-code 或 cursor。其他客户端、豆包工作和 Skill 的接法放在这里。已经装过旧版的话,第一条加上 --force,再重新接入、重启或重新加载 MCP;保留原来的用户数据和配置。详细步骤见升级说明。

MCP 接入和技能安装分别处理。随包的课表导出技能组织校历核对和文件转换,完整学期课表仍需另行取得和核实。技能 ZIP 是可选资源包,生成后仍需按客户端支持的方式安装,不会自动让当前 agent 加载技能。

v0.6.0 支持本机 stdio 与个人服务器私有 Streamable HTTP,共用一套工具。认证默认走 HTTP 和本人终端;雨课堂由本人手机确认官方二维码,对分易沿用原微信回调。默认安装和 Docker 模板不需要桌面或 Chromium,Playwright 仅作为显式浏览器兼容依赖。服务器不必安装 agent 或模型服务,详见服务器说明和认证流程。

在运行 MCP 的主机终端执行 stu-mcp login mystu、stu-mcp login yuketang 或 stu-mcp login repair;密码和动态码隐藏输入,不交给 agent。会话及个人缓存加密保存,WebVPN 可另行明确配置按需自动重登。设置页默认提供宿主 CLI 指引;需原浏览器时显式选择 --browser。客户端到 MCP 和 MCP 到学校是两段网络,连上服务器不代表服务器能访问校园网。版本与登录说明 · 存储与隐私

本版包含对分易后台和轻量本地网页:选课、启停监听、查询签到结果,微信回调可在宿主终端或本地网页完成。MCP 退出后后台继续运行,状态明确区分未启动、未登录、已暂停、监听中和查询异常。支持持续监听;电脑需保持运行和联网。新的课堂自动提交仍待实测。安装与用法

宿舍报修使用独立 HTTP 会话填表,完整展示实际表单,等你明确确认后只提交一次。随后核对新增单据及详情,返回单号、处理状态和核对时间;结果未知时只读查单。草稿留在进程内存,登录会话独立加密保存。当前适配桑浦山学生社区;新版真实登录和填表预览已核验,正式提交仍由合成与回环测试覆盖,没有为验收额外建单。校园网报修是另一套入口。使用与验证范围

教务当前可用 stu-mcp login jw --allow-http-callback 明确允许本次官方票据回调,密码始终发至 HTTPS SSO。OA 的 HTTP 8118 兼容是另一项默认关闭的本地选择,不能默默开启或借用教务许可;详见认证说明。从 0.4.1 之前升级需重新登录并刷新教务。

喜欢用终端的话,也可以直接查:

stu-mcp refresh oa --limit 20
stu-mcp query notice --source oa --search 竞赛
stu-mcp huyou search 选课

还在慢慢补

当前版本为 v0.6.0 学生预览版。本版把默认登录改为纯 HTTP CLI,加入个人服务器接入与轻量容器模板,保留 38 项工具的名称和输入输出接口。继续以 GitHub prerelease 发布,不把预览版称作稳定版。发行说明 · 最近更新

正式 HTTP 适配器已实测教务、MySTU 的身份与课程、ELC/Campus 的部分业务、雨课堂课程活动,以及报修登录和完整预览。WebVPN 的密码、动态口令和资源目录通过;受保护 OA 正文及自然过期续登尚未通过本轮验收。发行 CI 包含跨平台测试和默认镜像离线检查,容器内学校业务、跨机接入、更多账号和真实新报修提交仍分别待验,详见验证记录。

如果你用起来了,或者发现某个入口读不动了,欢迎开 issue 聊聊。告诉我用的版本、卡在哪一步就很有帮助,别把真实成绩、密码或登录凭据贴进去。

想自己改也可以:

uv sync --extra dev
uv run --extra dev pytest -q
uv run --extra dev ruff check .
uv run stu-mcp setup
uv run stu-checkin
uv build

文档目录 · 更新记录 · 代码结构 · 代码来源

MIT 许可。个人折腾的小项目,和学校官方没有关系。

Available Tools

16 tools
academic_summaryB
Read-onlyIdempotent

按已缓存的全部成绩计算学分加权均分/绩点;包含计算口径,不替代学校官方认定。

ParametersJSON Schema
NameRequiredDescriptionDefault
semesterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful context beyond that: results are computed from already-cached data (not a live upstream fetch) and include a stated calculation methodology, plus the caveat that it does not replace official school recognition. It omits whether stale cache affects results, but the added transparency is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense, front-loaded sentence that leads with the computation and its inputs, then appends the methodological caveat. Nothing is padded, though the semicolon-separated clauses require careful parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the description covers the data source and the non-official caveat. The remaining gap is the undocumented semester parameter, which is material for a calculation tool whose behavior changes depending on whether it is set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'semester' parameter (with an empty-string default) is never mentioned in the description. Worse, the phrase '按已缓存的全部成绩' ('all cached grades') suggests an unscoped computation, leaving the agent to guess how semester filtering interacts with the summary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (calculate credit-weighted average score/GPA) on a specific resource (all cached grades), which clearly differentiates it from the raw-data siblings like get_grades and get_exams. It stops short of naming an alternative tool, but the verb+resource pairing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage context by noting the result derives from cached grades and is not an official school determination, which tells the agent this is an informational derivative metric. However, it never says when to prefer this over get_grades, nor whether the empty-default semester should be supplied to scope the calculation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_capabilitiesA
Read-onlyIdempotent

查看可用校园功能、每个来源的登录状态和缓存时间;不会要求一次配置全部账号。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: it reports per-source login state and cache/freshness times, and asserts it will not force configuring all accounts at once, i.e. no config side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with the primary content front-loaded and the usage reassurance trailing after a semicolon. Every clause carries information; only the second clause is slightly oblique.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not enumerate return fields, and strong annotations carry the safety profile. For a zero-parameter status tool the description is adequate, though it could state more explicitly when to prefer this over open_setup or refresh_source.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. Schema coverage is 100% (vacuously) and no parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource set ('可用校园功能', per-source '登录状态', '缓存时间'), so the agent knows this returns a capability/status overview rather than notices, grades, or courses. It does not explicitly name which sibling it supersedes, but the content is distinct enough to separate it from refresh_source and the various get_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause '不会要求一次配置全部账号' hints at the usage context (safe to inspect without configuring every account, useful before other calls), but there is no explicit 'call this when...' or 'use X instead' routing. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_course_resourcesA
Read-onlyIdempotent

查询课程资料、Moodle/ELC 活动链接缓存。工具不会提交作业或修改学校记录。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
sourceNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description usefully adds that results come from a link cache and that the tool will not submit assignments or mutate school records. The cache mention implies possible staleness, which is behavior beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with purpose followed by the boundary condition. No filler, nothing redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the read-only nature is well covered. However, four parameters with zero documentation leave the calling contract underspecified for what is otherwise a simple lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across four parameters (limit, query, offset, source), and the description supplies no meaning for any of them. With no enum hints and no per-parameter text, an agent must guess what 'source' accepts and how 'query' is matched.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (查询/query) and concrete resources (课程资料, Moodle/ELC 活动链接缓存), which distinguishes it from siblings like get_courses, get_grades and get_exams. The scope is clear, though the phrase '活动链接缓存' is slightly opaque about what exactly is returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a negative boundary ('不会提交作业或修改学校记录'), which implies when-not usage, but it names no alternative sibling for when a different tool is needed. Usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_coursesB
Read-onlyIdempotent

读取 MySTU/雨课堂课程缓存;各来源独立登录,使用最新可用学期。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
sourceNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world. The description adds genuine context beyond that: each source logs in independently and the latest available semester is used. It still omits caching/refresh semantics or pagination behavior, so it is useful but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with no filler, and the resource is front-loaded. It is efficient, though the behavioral clause is packed in rather than separated for scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, with 0% parameter coverage and no usage guidance, the description is thinner than a four-parameter, multi-source read tool warrants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across four parameters (limit, query, offset, source), so the description carries the full burden of explaining them. It only hints at 'sources' generally and never maps to the source/query/limit/offset arguments, leaving them undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (读取/read) and resource (MySTU/雨课堂课程缓存), which distinguishes it from siblings like get_course_resources and get_grades. It is clear about scope, though it does not explicitly contrast itself with the nearest sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains source-login behavior and semester selection but gives no when-to-use guidance and names no alternatives (e.g. get_course_resources vs get_courses). The agent must infer the selection conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_examsB
Read-onlyIdempotent

读取本人考试安排缓存,包含考场/时间等信息;以学校页面为准。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/no-open-world safety. The description adds critical behavioral context beyond annotations: the data is a cache (缓存) and the school page is authoritative, warning that results may be stale or unofficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states purpose, return contents, and a freshness caveat with zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with an output schema, the description adequately covers purpose and data freshness. However, it leaves all parameter behavior (limit, query, offset) unexplained despite 0% schema coverage, which is a clear gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all 3 parameters (limit, query, offset), and the description does not mention any parameter semantics at all. It fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (读取) and resource (本人考试安排缓存), and clarifies the content includes 考场/时间等信息. It distinguishes from siblings like get_schedule/get_grades by focusing on exams, though it does not name an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides only a data-reliability caveat (以学校页面为准), not when to use this tool versus get_schedule or other siblings. No explicit conditions, exclusions, or alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gradesA
Read-onlyIdempotent

读取本人教务成绩缓存,支持课程/学期关键词。需要先在本地登录并刷新 jw。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read-only/idempotent profile, so the description earns credit for adding two things they don't: the data comes from a cache (possible staleness) and a prior local login plus 'refresh jw' is required. It stops short of describing pagination or staleness semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: purpose first, precondition second. No filler, no repetition of the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be explained, and annotations cover safety. Purpose, precondition, and the key query semantic are covered; only pagination behavior and cache-staleness implications are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the param burden. It clarifies the non-obvious 'query' param as a course/semester keyword filter, but says nothing about 'limit' or 'offset', leaving two of three params to inference from standard naming.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('读取本人教务成绩缓存' – read one's own grade cache) and adds scope ('本人' = own grades). The word '缓存' (cache) usefully distinguishes it from a fresh fetch, though it doesn't explicitly name a sibling for contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a real precondition ('需要先在本地登录并刷新 jw'), which tells the agent what must happen before calling. However it never states when to prefer this over alternatives such as refresh_source or get_exams, so routing guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_noticeB

读取通知正文及附件列表;refresh=true 从已缓存的学校链接获取正文,不接受任意 URL。

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
refreshNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description adds genuinely useful context beyond them: refresh pulls from a cached school link and arbitrary URLs are rejected. However it never explains what refresh mutates (cache state) or how it relates to the non-read-only annotation, which the agent needs to reconcile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence, front-loaded with the tool's function and then the refresh constraint. Every clause earns its place, though the punctuation-heavy semicolon structure slightly compresses two distinct facts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-format explanation is not required, and the core purpose plus refresh behavior are covered. Gaps remain around item_id's origin (how it is obtained from search_notices) and any pagination or error behavior, leaving the definition adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load. It gives real meaning for refresh (source is the cached school link, not an arbitrary URL) but says nothing at all about item_id, leaving half the parameters undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 读取通知正文及附件列表 ('read the notice body and attachment list'), which clearly distinguishes it from search_notices and read_attachment. It is a clear, unambiguous purpose, though it does not explicitly name the sibling it differs from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an implied usage cue via refresh=true ('从已缓存的学校链接获取正文') and one exclusion ('不接受任意 URL'), but never states when to call this tool versus search_notices or read_attachment, nor any prerequisites. Usage is inferable rather than prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scheduleB
Read-onlyIdempotent

读取 MySTU 个人日程缓存,刷新范围为过去 7 天至未来 31 天。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior, so safety is covered. The description adds genuinely useful non-annotation context: this reads a local cache and its data covers only the past 7 days through the next 31 days, which tells the agent about freshness and coverage limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence that front-loads the action, resource, and data window with no filler. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. However, with three undocumented parameters at 0% schema coverage, the definition is incomplete on the input side and leaves the agent guessing about pagination and filtering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage and three parameters (limit, query, offset) with only titles and defaults. The description says nothing about any of them, so it fails to compensate for the schema gap; an agent cannot tell what query filters on or how limit/offset behave.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (读取 MySTU 个人日程 = read MySTU personal schedule) and identifies the data source as the local cache, plus the temporal coverage window. It does not explicitly differentiate itself from similar siblings such as get_tasks or get_exams, so it falls 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over alternatives like get_tasks, get_exams, or refresh_source, despite those siblings existing. The stated refresh window implies the data range but offers no when/when-not criteria for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tasksC
Read-onlyIdempotent

读取作业/测验待办、截止时间和学校提供的提交状态;本地状态与学校状态分开。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
sourceNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and non-destructive, so the safety profile is covered. The description adds genuine value by disclosing that local task status and school-reported submission status are tracked separately, but it says nothing about filtering, ordering, pagination, or how stale the school data may be.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the most important fact (what is read) comes first. It is efficient, though the extreme brevity contributes to the missing guidance elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but for a four-parameter, zero-required listing tool the definition leaves filtering, pagination, and source selection entirely undocumented, and gives no usage signal against set_task_status. Too thin for a tool with this many undocumented knobs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across four parameters (limit, query, offset, source) and the description mentions none of them. An agent gets no information on how to filter by source, page results, or use the query string, so the description fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (读取) and resource (作业/测验待办) plus the returned facets (截止时间、提交状态), so an agent knows exactly what it retrieves. It reads as a task-listing tool, but it never explicitly names how it differs from the sibling set_task_status (write) or get_grades, leaving sibling differentiation to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement and no routing to alternatives. The clause '本地状态与学校状态分开' hints at how the data is organized but gives the agent no condition for selecting this tool over set_task_status or get_grades.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_setupA

在用户本机打开设置页,用学校官方页面完成登录。不要向用户索要密码或 token。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare non-read-only, non-destructive, non-idempotent, non-open-world, but say nothing about where the action lands. The description supplies exactly that context – the page opens locally on the user's machine – plus an important behavioral constraint: never request the user's password or token. That is real value beyond the annotations; it stops short only of describing what happens after login completes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: the action and its location come first, the security constraint second. No redundant restatement of the tool name and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and with zero parameters the schema burden is nil. The description covers the action, its locality, and the credential-handling rule. The only omission is when this should be invoked relative to siblings and what the agent should do after the login flow returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description correctly adds no parameter narrative because there is nothing to parameterize; the schema is empty and complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and object ('在用户本机打开设置页' – open the setup page on the user's machine) and adds what the setup accomplishes (school-official login). The core action is unambiguous and clearly distinct from the get_* siblings, though it never names an alternative tool to differentiate against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: run this to get the user set up/authenticated before other tools can work, and skip credential collection. There is no explicit 'use this when… / use X instead when…' routing against siblings such as get_service_links or refresh_source, so the agent must infer the trigger condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_attachmentB
Read-onlyIdempotent

提取已缓存通知的 PDF/文本附件,序号从 0 开始。最多 8 MiB、100 页,扫描件不做 OCR。

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNo
item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable processing limits (max 8 MiB, 100 pages) and clarifies that scanned copies are not OCR'd—useful context beyond annotations. It does not mention auth or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the purpose front-loaded, followed by constraints. No wasted words; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool, annotations and output schema cover safety and return values. However, the required item_id parameter is undocumented and there is no usage context (e.g., how to obtain a valid item_id), leaving a gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies that index is 0-based, but item_id (the required parameter) is left completely unexplained; an agent cannot infer its format or source. Partial compensation only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (提取/extract) and resource (PDF/文本附件 from cached notices), clearly distinct from sibling get_notice which retrieves notice content. Does not explicitly name alternatives, so 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, alternatives, or prerequisites are provided. The only implicit context is 'cached notices', which is minimal and not framed as usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_sourceA

按需获取 public/oa/jw/mystu/yuketang;1–50 条/课程,报告范围和部分失败。教务学期可留空。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sourceYes
semesterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-idempotent, open-world, non-destructive operation, so the safety profile is covered. The description adds genuine behavioral context beyond that: it reports scope and partial failures, and bounds each course fetch to 1–50 records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the fetch action and packs source list, range limit, failure reporting, and the semester caveat with no filler. The extreme terseness borders on cryptic but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. Given 3 parameters and no enums in the schema, the description supplies the missing source options, limit bounds, optional-semester behavior, and partial-failure reporting — enough for an agent to call it correctly, though it never says where refreshed data is stored.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden and does compensate well: it enumerates candidate source values, documents the 1–50 per-course limit, and states that semester may be left empty for 教务 sources. Only the exact meaning of each source token remains unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (按需获取/on-demand fetch) and names the concrete resources it pulls (public/oa/jw/mystu/yuketang), which distinguishes it from the read-only get_* siblings. The individual source tokens are opaque to an outside reader, but the fetch/ingest intent is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'按需' (on demand) implies refresh-style usage rather than scheduled or first-time retrieval, and the semester note hints at a conditional parameter. However, no alternative tool is named and there is no explicit when-not guidance, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_noticesA
Read-onlyIdempotent

搜索本地通知缓存;空结果不能证明学校没有通知。先根据范围刷新,再读正文确认条件。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
sourceNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: it operates on a cache and an empty result is not authoritative proof of absence. That staleness caveat is exactly the kind of thing annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, front-loaded with what the tool does, then the caveat, then the workflow. Every clause carries information; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the cache caveat plus workflow advice is useful. However, with 0% parameter documentation the agent still cannot tell how to shape a call, leaving a real gap for a 4-parameter search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 4 parameters (limit, query, offset, source), and the description says nothing about them. It mentions 'scope' and 'body' abstractly but never explains what query matches, what source values are valid, or how limit/offset page the results. It fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: search the local notice cache. It also implicitly distinguishes itself from siblings by naming the refresh-then-read workflow. Not a 5 because it never contrasts itself with get_notice or other retrieval tools by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives actionable ordering guidance: refresh by scope first, then read the body to confirm. This maps onto the sibling tools refresh_source and get_notice. No explicit 'do not use this for X' exclusion, so it falls 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.

set_student_profileB

保存可选的学院/专业/年级/兴趣,帮助用户的 agent 筛选机会。不接收认证信息。

ParametersJSON Schema
NameRequiredDescriptionDefault
majorNo
collegeNo
interestsNo
entry_yearNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the safety profile is known. The description adds a useful behavioral note that it does not accept authentication information, but omits critical write semantics such as whether it merges with or replaces an existing profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with the action stated first and the constraint second; no filler. Slightly terse given the gaps it leaves, but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. Still, for a mutation tool with four 0%-documented parameters, the description should clarify merge/replace behavior and field formats, which it does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden, and it does name all four fields (college/major/grade/interests) mapping to the four parameters. However, it gives no format or type guidance (e.g., entry_year format) and does not mention that all fields are optional with empty-string defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (保存/save) and resource (学院/专业/年级/兴趣 = college/major/grade/interests), and gives the downstream purpose (helping the agent filter opportunities). The purpose is clear, though it does not explicitly differentiate itself from any sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied via '帮助用户的 agent 筛选机会' (helps the user's agent filter opportunities) and the constraint '不接收认证信息'. There is no explicit when-to-use, when-not-to-use, or named alternative, but the intent is inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_task_statusA

将本地待办标记为 todo/done/ignored。仅改本机状态,不向学校提交或修改作业。

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the mutation profile is partly covered. The description adds genuinely new context beyond that: the mutation is confined to local state and never propagates to the school system, which prevents the agent from misreading this as a submission action. It does not address idempotency (idempotentHint=false) or re-setting the same status.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and immediately followed by the scope constraint. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the annotations cover the safety profile. The description supplies the critical local-vs-school distinction, leaving only minor gaps around sourcing item_id and idempotent behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load. It enumerates the three valid status values (todo/done/ignored), which is valuable given no enum is defined in the schema, but it says nothing about item_id — its format, or that it likely comes from get_tasks. Partial compensation only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (mark a local todo item as todo/done/ignored) and scopes it as local-only. It implicitly distinguishes itself from read siblings like get_tasks and from school-facing actions, though it does not name an alternative tool directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a useful negative boundary (it does not submit to or modify school assignments), which tells the agent when this is NOT the right tool. There is no positive guidance on when to prefer this over other write tools such as set_student_profile, so usage is only implied.

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.

  1. 16 tool updatesv0.1.0
    • First observedacademic_summary
    • First observedget_capabilities
    • First observedget_course_resources
    • First observedget_courses
    • First observedget_exams
    • First observedget_grades
    • First observedget_notice
    • First observedget_schedule
    • First observedget_service_links
    • First observedget_tasks
    • First observedopen_setup
    • First observedread_attachment
    • First observedrefresh_source
    • First observedsearch_notices
    • First observedset_student_profile
    • First observedset_task_status

TDQS

A3.5/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct campus resource or local action: refresh_source handles cache population, get_* tools read specific cached domains, and set_* tools change local state. The only potential overlap is refresh_source versus get_* refresh behavior, but the descriptions make the cache-refresh/read split clear.

Naming Consistency4/5

All tools use snake_case and are mostly verb_noun, such as refresh_source, get_notice, and set_task_status. The lone exception is academic_summary, a noun phrase, but it remains readable and does not undermine the overall pattern.

Tool Count4/5

16 tools is slightly above the typical 3-15 sweet spot, but the broad campus aggregation purpose justifies coverage across notices, grades, courses, tasks, schedule, setup, and local state. No tool appears redundant.

Completeness4/5

The surface covers the major lifecycle needs: source refresh, notice search/read/attachment extraction, grades/GPA, exams, courses/resources, tasks, schedule, service links, profile, capabilities, and setup. Minor gaps like no explicit get_profile or cache-clear exist but are workable.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables AI clients to read a student's own UGent Ufora (D2L Brightspace) data, including courses, announcements, deadlines, grades, course materials, and PDF text, over stdio or local Streamable HTTP. All operations are read-only and run locally against the student's authenticated session.
    19
    2
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to access Kwangwoon University's KLAS academic system for course schedules, deadlines, attendance, lecture materials, assignments, and adaptive study tools while keeping credentials and data local.
    31
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables 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.
    19
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables read-only querying of eight campus services through independent local MCP adapters: mailbox search, reading and attachment download, Blackboard courses, academic-system terms, timetable and grades, library loans and navigation, teaching-office notices, the Nan7 market listings, course-review community ratings, and the campus data dashboard. Credentials and sessions remain on the user's own device, encrypted with Windows DPAPI, and nothing is submitted, registered, or booked on the user's behalf.
    7
    1
    MIT