Skip to main content
Glama

schoolbridge

将 Canvas(及其他学校平台)与 AI 代理连接起来。

schoolbridge 监控你学校的 LMS,并将其转换为 AI 代理能真正使用的格式。当老师布置作业、上传成绩、更改截止日期或发布公告时,你的代理会收到通知——并且可以向你汇报、为你的周计划排序,或为你下一次考试制定学习计划。

它支持三种接口,因此可以与几乎任何代理设置配合使用:

接口

适用场景

示例

MCP 服务器

Claude Code, Claude Desktop, Claude Cowork, 任何 MCP 客户端

schoolbridge mcp

Agent skill (SKILL.md)

Hermes, OpenClaw, 任何 Agent-Skills 运行时

schoolbridge install-skill hermes

JSON 命令行工具

Shell 驱动的代理、cron 任务、脚本

schoolbridge upcoming --json

事件监视器

推送式自动化

schoolbridge watch --exec 'my-agent brief'

Canvas 是内置提供者。提供者接口很小且已文档化,因此可以添加 Google Classroom、Schoology、Moodle 等——参见 docs/PROVIDERS.md。

schoolbridge 是只读的:它永远不会向你的 LMS 写回任何内容。


快速开始

npm install -g schoolbridge     # or run everything below with: npx schoolbridge …

立即试用(无需凭证)

每个命令都接受 --provider mock,它会提供逼真的示例数据:

schoolbridge upcoming --provider mock
 1. [CRITICAL 73] Chapter 12 Reading Quiz
    US History · overdue by 20h · 10 pts · missing
 2. [HIGH 66] Unit 4 Test: Cellular Energetics
    AP Biology · due in 4d 23h · 100 pts · unsubmitted
 3. [HIGH 59] Reconstruction DBQ Essay
    US History · due in 2d 23h · 100 pts · unsubmitted
 ...

连接你的真实 Canvas 账户

  1. 在浏览器中登录 Canvas → 账户 → 设置 → 滚动到 已批准的集成 → + 新建访问令牌。立即复制令牌。

  2. 运行:

schoolbridge init --base-url https://yourschool.instructure.com --token <paste-token>

init 会验证连接,然后将配置保存到 ~/.schoolbridge/config.json(创建时权限为 0600——它保存了你的令牌)。你也可以完全不用文件,而是使用 CANVAS_BASE_URL 和 CANVAS_ACCESS_TOKEN 环境变量。

然后:

schoolbridge upcoming          # ranked work due this week (+ recent overdue work)
schoolbridge grades            # course grades + recently graded assignments
schoolbridge announcements     # recent teacher announcements
schoolbridge events            # what changed since the last check

Related MCP server: Canvas LMS MCP Server

与 Claude 一起使用(MCP)

Claude Code

claude mcp add schoolbridge -- npx -y schoolbridge mcp

Claude Desktop / Claude Cowork

添加到你的 MCP 配置中(例如 claude_desktop_config.json):

{
  "mcpServers": {
    "schoolbridge": {
      "command": "npx",
      "args": ["-y", "schoolbridge", "mcp"],
      "env": {
        "CANVAS_BASE_URL": "https://yourschool.instructure.com",
        "CANVAS_ACCESS_TOKEN": "your-token"
      }
    }
  }
}

(如果你运行了 schoolbridge init,则 env 块是可选的——服务器会读取已保存的配置。)

然后直接提问:

"学校有什么新动态?" · "帮我将这周要完成的所有任务排序并规划日程。" · "帮我制定一份生物考试的学习计划。"

MCP 工具

工具

返回值

list_courses

活跃课程及其当前成绩/分数

list_upcoming_work

未来 N 天内到期的工作(默认 7 天) + 近期逾期工作,每个都带有一个 0–100 的 priority 等级提示

get_assignment_details

单个作业及其完整说明(纯文本)

list_announcements

过去 N 天内教师的公告

get_grades

课程成绩 + 最近两周内已评分的内容

check_new_events

自上次检查以来发生的变化(参见 事件)

MCP 提示词

提示词

作用

whats_new

检查变化并向学生汇报

plan_my_week

对本周的工作进行排序并制定逐日计划

study_plan

为考试制定逐日学习计划(参数:course,可选 assignment)


与 Hermes 一起使用

schoolbridge 附带一个可移植的 Agent Skills SKILL.md,它教会 Hermes 整个工作流程——设置、排序、学习计划和事件监控。可以通过以下任一方式安装:

npm install -g schoolbridge
schoolbridge install-skill hermes      # writes ~/.hermes/skills/schoolbridge/SKILL.md

或者直接从本仓库使用 Hermes 自己的安装器:

hermes skills install https://raw.githubusercontent.com/Shoberman2/schoolbridge/main/skill/SKILL.md

Hermes 在启动时会自动发现该技能,并在对话涉及学校相关内容时激活它(例如 "我有什么家庭作业?"、"规划我的一周"、"为生物考试制定学习计划")。将 schoolbridge events --json 添加到心跳/计划任务中,Hermes 就会在老师发布作业、上传成绩或发布公告时主动通知你。

与 OpenClaw 一起使用

相同的技能,OpenClaw 版本——前导部分包含一个 metadata.openclaw 块,用于检查 schoolbridge 二进制文件的存在,并引导 OpenClaw 的安装器指向 npm 包:

npm install -g schoolbridge
schoolbridge install-skill openclaw    # writes ~/.openclaw/skills/schoolbridge/SKILL.md

按工作区安装:将 skill/ 复制到 <workspace>/skills/schoolbridge/。对于主动警报,在你的 HEARTBEAT.md 中添加一行,例如:"运行 schoolbridge events --json;如果输出事件,请告诉我。"

还有 schoolbridge install-skill agents 用于其他 Agent-Skills 兼容运行时共享的 ~/.agents/skills 目录。

与任何其他代理一起使用(Shell/JSON)

每个读取命令都接受 --json 并输出干净、稳定的 JSON——直接将其导入你的代理上下文:

schoolbridge upcoming --json --days 7
schoolbridge grades --json
schoolbridge announcements --json --days 3
schoolbridge assignment 101 5002 --json     # full details incl. instructions

轮询更改

schoolbridge events 将 LMS 与上次运行时的状态进行比较,并仅输出已更改的内容。首次运行会保存基线快照并不输出任何内容。状态数据保存在 ~/.schoolbridge/state.<provider>.json 中。

schoolbridge events --json      # one JSON event per line; empty output = nothing new
schoolbridge events --reset     # start over from a fresh baseline

一个用于 shell 代理的 cron 心跳:

*/15 8-22 * * * schoolbridge events --json | your-agent ingest-school-events

推送模式

watch 按间隔轮询,将事件以 JSON 行形式输出到 stdout(日志输出到 stderr),并可以将每批事件推送出去:

schoolbridge watch --interval 15m --exec 'your-agent brief --stdin'   # JSON payload on stdin
schoolbridge watch --interval 15m --webhook https://your-agent.example/hooks/school

Webhook/exec 负载:

{
  "source": "schoolbridge",
  "provider": "canvas",
  "generatedAt": "2026-08-17T20:15:00.000Z",
  "events": [ … ]
}

事件

每个事件都具有相同结构,因此代理可以根据 type 进行模式匹配:

{
  "type": "grade_posted",
  "occurredAt": "2026-08-17T20:15:00.000Z",
  "courseId": "101",
  "courseName": "AP Biology",
  "title": "Cell Respiration Lab Report",
  "summary": "Grade posted in AP Biology: “Cell Respiration Lab Report” — 47/50 (94%).",
  "url": "https://yourschool.instructure.com/courses/101/assignments/5001",
  "data": { "assignmentId": "5001", "score": 47, "grade": "47", "pointsPossible": 50 }
}

type

触发条件

new_assignment

教师发布作业、测验或考试

due_date_changed

作业被重新安排时间

grade_posted

之前未评分的作业出现了成绩

grade_changed

已有成绩被修订

new_announcement

教师发布公告

course_grade_changed

你的总课程成绩发生了变化

summary 始终是一个可以直接说出的句子;data 包含结构化的变更前后值。


优先级排序

list_upcoming_work / schoolbridge upcoming 为每个项目附加一个 priority 分数(0–100)和标签(critical / high / medium / low)。它综合考虑:

  • 截止日期临近程度(最重因素),

  • 分值,

  • 类似考试的程度(测验,或名称匹配 test/exam/midterm/final),

  • 缺失/逾期状态(加分)和已提交(降至约 0)。

它故意只是一个提示,而不是最终判定——预期模式是 AI 将其作为起始顺序,并用判断力覆盖它(即使工作表的截止日期更早,也应该先开始写论文)。

作为库使用

import { CanvasProvider, listUpcoming, checkEvents, StateStore } from "schoolbridge";

const provider = new CanvasProvider({ baseUrl: "https://yourschool.instructure.com", token: process.env.CANVAS_ACCESS_TOKEN! });
const ranked = await listUpcoming(provider, 7);
const { events } = await checkEvents(provider, new StateStore(provider.name));

配置参考

每个设置的解析顺序:CLI 标志 → 环境变量 → ~/.schoolbridge/config.json。

设置

标志

环境变量

提供者(canvas / mock)

--provider

SCHOOLBRIDGE_PROVIDER

Canvas URL

--base-url

CANVAS_BASE_URL

Canvas 令牌

--token

CANVAS_ACCESS_TOKEN(或 CANVAS_TOKEN)

配置/状态目录

—

SCHOOLBRIDGE_HOME(默认 ~/.schoolbridge)

隐私与安全

  • 你的令牌和所有状态数据保留在你的机器上;schoolbridge 仅与你的学校 Canvas 主机通信(以及,如果你选择开启,你的自定义 webhook)。

  • 所有操作对 LMS 都是只读的。

  • 请像对待密码一样对待你的 Canvas 令牌。你可以随时在 Canvas → 账户 → 设置中撤销它。

路线图

  • 提供者:Google Classroom、Schoology、Moodle、PowerSchool

  • 日历导出(ICS)即将到期的工作

  • Canvas 模块/文件上下文,用于更丰富的学习计划

  • 在机构允许的情况下,原生推送(Canvas 实时事件)

贡献

欢迎提交 PR——特别是新的提供者。参见 CONTRIBUTING.md 和 docs/PROVIDERS.md。mock 提供者和 npm test 让你无需任何学校凭证即可进行开发。

许可证

MIT

Related MCP Connectors

Related MCP Servers