Skip to main content
Glama

schoolbridge

学校のLMS(Canvas等)をAIエージェントと連携させます。

schoolbridgeはあなたの学校のLMSを監視し、AIエージェントが実際に利用できる形に変換します。教師が課題を投稿したり、成績をアップロードしたり、締切を変更したり、お知らせを投稿したりすると、エージェントがその情報を取得し、あなたに報告したり、週間ランキングを作成したり、次のテストに向けた学習計画を立てたりすることができます。

3つの異なるインターフェースを備えているため、ほとんどのエージェント環境で動作します。

インターフェース

対象

使用例

MCPサーバー

Claude Code、Claude Desktop、Claude Cowork、その他MCPクライアント

schoolbridge mcp

エージェントスキル (SKILL.md)

Hermes、OpenClaw、その他Agent-Skillsランタイム

schoolbridge install-skill hermes

JSON CLI

シェル駆動型エージェント、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 ブロックはオプションです — サーバーは保存された設定を読み取ります。)

あとは、次のように質問するだけです:

「学校で何か新しいことは?」 · 「今週の課題をすべてランク付けして、1日の計画を立てて。」 · 「生物のテストの学習計画を立てて。」

MCPツール

ツール

戻り値

list_courses

現在の成績/スコアを含むアクティブなコース

list_upcoming_work

今後N日以内(デフォルト7日)の課題 + 最近の期限切れ課題。各課題には0~100の priority ランキングヒントが付きます

get_assignment_details

1つの課題とその完全な指示をプレーンテキストで取得

list_announcements

過去N日間の教師からのお知らせ

get_grades

コースの成績 + 過去2週間に評価されたすべてのもの

check_new_events

前回のチェック以降に変更されたすべてのもの(イベント を参照)

MCPプロンプト

プロンプト

機能

whats_new

変更をチェックして学生に報告

plan_my_week

今週の課題をランク付けし、日別の計画を提示

study_plan

テストのための日別学習計画を作成(引数:course、オプションで assignment)


Hermesで使用する

schoolbridgeには、セットアップ、ランキング、学習計画、イベント監視の全ワークフローをHermesに教えるポータブルなAgent Skills SKILL.mdが同梱されています。次のいずれかの方法でインストールします:

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 を実行し、イベントがあれば報告してください。」

また、他のAgent-Skills互換ランタイムで使用される共有 ~/.agents/skills ディレクトリ用に schoolbridge install-skill agents もあります。

他のエージェントで使用する(シェル/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

シェルベースのエージェント用のcronハートビート:

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

プッシュモード

watch は一定間隔でポーリングし、イベントをJSON Linesとして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