Skip to main content
Glama

schoolbridge

Canvas(및 기타 학교 플랫폼)를 AI 에이전트에 연결하세요.

schoolbridge는 학교의 LMS를 감시하여 AI 에이전트가 실제로 사용할 수 있는 형태로 변환합니다. 교사가 과제를 게시하거나, 성적을 업로드하거나, 마감일을 변경하거나, 공지사항을 올리면 에이전트가 이를 감지하여 사용자에게 브리핑하거나, 주간 일정을 정리하거나, 다음 시험을 위한 학습 계획을 세울 수 있습니다.

세 가지 인터페이스를 제공하므로 거의 모든 에이전트 설정과 호환됩니다:

인터페이스

대상

예시

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 블록은 선택 사항입니다 — 서버가 저장된 설정을 읽습니다.)

그런 다음 질문하세요:

"학교에 새로운 소식이 뭐야?" · "이번 주에 해야 할 모든 일을 순위를 매겨서 하루 계획을 세워줘." · "생물학 시험을 위한 학습 계획을 만들어줘."

MCP 도구

도구

반환값

list_courses

현재 성적/점수가 포함된 활성 과정

list_upcoming_work

향후 N일(기본 7일) 내의 과제 + 최근 연체 과제, 각각 0–100 priority 순위 힌트 포함

get_assignment_details

하나의 과제와 전체 지침을 일반 텍스트로 반환

list_announcements

최근 N일 동안의 교사 공지사항

get_grades

과정 성적 + 지난 2주 동안 채점된 모든 항목

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 실행; 이벤트가 출력되면 나에게 알려줘."

다른 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는 일정 간격으로 폴링하여 이벤트를 stdout에 JSON 라인으로 출력하고(로그는 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

웹훅/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 호스트(및 선택적으로 사용자 웹훅)와만 통신합니다.

  • 모든 작업은 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