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_URLCANVAS_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.mddocs/PROVIDERS.mdmock 提供者和 npm test 让你无需任何学校凭证即可进行开发。

许可证

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.

  • Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Shoberman2/schoolbridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server