canvas-parent-mcp について
canvas-parent-mcpは、保護者オブザーバーや学生が自分のCanvas LMSデータにアクセスするための非公式MCPサーバーです。コース、課題、成績、予定、メッセージ、ファイルを中心に読み取るツールを備え、ブラウザーセッションを含む複数の認証方式に対応します。
主な機能
- 01プロフィールと監視対象アカウントの参照
- 02コース、課題、提出物の確認
- 03成績、カレンダー、プランナー項目の確認
- 04お知らせ、会話、ディスカッションの閲覧
- 05コースファイルの一覧とダウンロード
- 06トークン、OAuth、パスワード、ブラウザーセッション認証
活用シーン
- 01未提出課題と最近の提出状況の確認
- 02成績と今後のコース予定の確認
- 03コースのお知らせや会話の閲覧
- 04コースファイルのローカルディレクトリへの保存
MCP 対応
MCPツールを通じてCanvas LMSのデータを提供し、主に読み取りに対応します。ファイルのダウンロードも可能です。対応する認証方式で設定済みのCanvasインスタンスに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y canvas-parent-mcpCANVAS_BASE_URLCanvas instance base URL, e.g. https://cms.instructure.comCANVAS_USERNAMECanvas login username/email (recommended) — pair with CANVAS_PASSWORD for auto-login. No SSO/2FA.CANVAS_PASSWORDシークレットCanvas password (recommended) — required iff CANVAS_USERNAME is setCANVAS_TOKENシークレットCanvas personal access token (advanced) — most schools have disabled token creationCANVAS_CLIENT_IDCanvas OAuth client ID (advanced — for SSO accounts that can't use username/password)CANVAS_CLIENT_SECRETシークレットCanvas OAuth client secret (advanced)CANVAS_REFRESH_TOKENシークレットCanvas OAuth refresh token (advanced) — bootstrap via canvas-parent-mcp-qr-loginCANVAS_NAMEFriendly name for the Canvas instance (defaults to the host portion of the base URL)CANVAS_SESSION_CACHESet to false to disable the on-disk session cache and re-authenticate on every process start. Defaults to enabled.CANVAS_SESSION_FILEAbsolute path for the session cache file. Defaults to $MCP_DATA_DIR/.canvas-parent-mcp/session.json.CANVAS_OUTPUT_DIRDirectory canvas_download_file may write into (default ~/Downloads). A relative destinationPath is resolved against it.CANVAS_DISABLE_FETCHPROXYSet to 1 to turn off the browser (fetchproxy) fallback, so missing credentials are a hard error instead.FETCHPROXY_WS_PORTLocalhost port of the fetchproxy concentrator the ContextMint Bridge extension connects to (default 37149). Every MCP on one machine shares it, so move it for all of them or not at all.FETCHPROXY_WS_HOSTBind interface for the fetchproxy concentrator, a literal IP only (default 127.0.0.1). Keep on loopback; it exists for hosted deployments that run each MCP in its own network namespace.FETCHPROXY_IDENTITY_DIRAbsolute path where the fetchproxy long-term identity keypair is stored (default ~/.fetchproxy/identity/).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
19掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
canvas-parent-mcp
保護者のオブザーバーと生徒自身によるアクセスに対応した、Canvas LMS(Instructure)用の MCP サーバーです。デフォルトでは https://cms.instructure.com を対象としますが、任意の Canvas インスタンスで動作します。
兄弟プロジェクトの infinitecampus-mcp と同じ、保護者ポータルの読み取り専用の範囲をカバーします。ユーザーは canvas_* ツールのプレフィックスを使って操作します。
ツール
プロフィール、オブザーバー対象者、コース、課題、提出物、成績、カレンダー、プランナー、お知らせ、会話、ディスカッション、ファイルにわたる18個のツールがあります。
| ドメイン | ツール |
|---|---|
| プロフィール | canvas_get_profile |
| オブザーバー対象者 | canvas_list_observees |
| コース | canvas_list_courses、canvas_get_course |
| 課題 | canvas_list_assignments、canvas_list_missing_submissions |
| 提出物 | canvas_get_submission、canvas_list_recent_submissions(デフォルトの期間は14日) |
| 成績 | canvas_list_enrollments |
| カレンダー | canvas_list_calendar_events、canvas_list_upcoming_events |
| プランナー | canvas_list_planner_items |
| お知らせ | canvas_list_announcements |
| 会話 | canvas_list_conversations、canvas_get_conversation |
| ディスカッション | canvas_list_discussion_topics |
| ファイル | canvas_list_course_files、canvas_download_file |
ハーネスによって書き込み/IO 操作として制限されるツール:canvas_download_file。
canvas_download_file は、CANVAS_BASE_URL のホスト上にある /files/… URL(https)だけを取得するため、Canvas の認証情報が他の場所に送信されることはありません。また、ダウンロードディレクトリ(CANVAS_OUTPUT_DIR が設定されている場合はそのディレクトリ、未設定の場合は ~/Downloads)内にのみ書き込みます。相対パスの destinationPath は、そのディレクトリを基準に解決されます。保存先がシンボリックリンクの場合は書き込みを行わず、新しいファイルは所有者のみがアクセスできる権限(0600)で作成されます。
設定
CANVAS_BASE_URL と、4つの認証方式のうち1つを設定します。canvas-parent-mcp は優先順位に従って方式を試します。
CANVAS_TOKEN→ 個人用アクセストークンCANVAS_CLIENT_ID+CANVAS_CLIENT_SECRET+CANVAS_REFRESH_TOKEN→ OAuthCANVAS_USERNAME+CANVAS_PASSWORD→ セッションスクレイピング(Canvas の直接アカウントのみ)- fetchproxy のフォールバック → 環境変数は不要です。ContextMint Bridge のブラウザー拡張機能を介して、サインイン済みの Canvas タブから
canvas_sessionとpseudonym_credentialsの Cookie を読み取ります。
いずれも成功しない場合は、利用可能なすべての代替手段を示すエラーが表示されます。
Mode A — fetchproxy フォールバック(推奨、設定不要)
CANVAS_BASE_URL=https://cms.instructure.com
リリースページから ContextMint Bridge ブラウザー拡張機能をインストールし(Chrome:Chrome の zip をダウンロードして解凍し、デベロッパーモードをオンにした状態で chrome://extensions からパッケージ化されていない拡張機能を読み込みます。Chrome ウェブストアにはまだ掲載されていません。Safari:まだ利用できません。公開ダウンロードがない ContextMint アプリに同梱される予定のため、現時点では Chrome を使用してください)、Canvas インスタンスにサインインします。MCP は最初のリクエスト時と、Canvas が 401(セッションの期限切れ)を返すたびに、ブラウザーからセッション Cookie を読み取ります。その間、Canvas API の呼び出しは Node から直接行われます。拡張機能はリクエストのホットパスには含まれませんが、MCP がセッションを更新できるよう、アクセス可能な状態(ブラウザーが起動していて、拡張機能がインストールされている状態)を維持する必要があります。Canvas 自体がサインインを処理するため、どの認証フロー(SSO/SAML/2FA を含む)でも動作します。
拡張機能の入手先。 ContextMint Bridge は、同じメンテナーによる、fetchproxy ブラウザー拡張機能の新しい名称です。fetchproxy 自身の README の Extension からリンクされています。ソースコードは nullnet-app/contextmint-bridge で公開されています。自分でビルドするか(README の手順に従って
npm run buildを実行)、公開されている.sha256ファイルを使ってリリース zip を検証してください。shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256
複数の学区を利用していますか? 宣言されたドメイン instructure.com はすべての *.instructure.com ホストに一致するため、拡張機能とのペアリングは一度だけで済みます。MCP は CANVAS_BASE_URL に設定した学区を使用します。
CANVAS_DISABLE_FETCHPROXY=1 を設定すると、利用を無効にできます(認証情報がない場合はエラーになります。ヘッドレス CI での利用に便利です)。
Mode B — ユーザー名/パスワード(従来のセッション取得方式)
CANVAS_BASE_URL=https://cms.instructure.com
[email protected]
CANVAS_PASSWORD=your-canvas-password
CANVAS_NAME=cms # optional, defaults to host portion of base URL
Canvas の直接アカウントのみで利用できます。SAML/Google/Microsoft SSO または 2FA では動作しません。脆弱な方式であり、Canvas のログインページが変更されるたびに動作しなくなります。すでにタブでサインインしている場合は、fetchproxy を優先してください。.env はパスワードファイルと同じように扱ってください。
高度な代替手段
個人用アクセストークン — 管理者が許可している場合に最も簡単
CANVAS_BASE_URL=https://cms.instructure.com
CANVAS_TOKEN=your-personal-access-token
Canvas → アカウント → 設定 →「+ New Access Token」から生成します。ほとんどの教育機関では、管理者以外のユーザーは利用できないように設定されています。
モバイル QR コードを使った OAuth — モバイルアプリのログインフローから開始
CANVAS_BASE_URL=https://cms.instructure.com
CANVAS_CLIENT_ID=...
CANVAS_CLIENT_SECRET=...
CANVAS_REFRESH_TOKEN=...
アカウントで SSO を使用していて fetchproxy を使えない場合(ヘッドレスサーバーなど)は、Canvas モバイルアプリの QR ログインフローを再利用して OAuth 認証情報を作成できます。詳しくは、以下のモバイル QR コードを使った OAuth の初期設定をご覧ください。
複数の認証方式が設定されている場合の優先順位: CANVAS_TOKEN > ユーザー名/パスワード > OAuth > fetchproxy。
.env.example を参照してください。
セッションキャッシュ
ユーザー名/パスワードモードと OAuth モードでは、サインイン済みセッションが実行間でキャッシュされるため、再起動しても再ログイン(またはリフレッシュトークンの交換)されません。キャッシュファイルは、デフォルトでは $MCP_DATA_DIR/.canvas-parent-mcp/session.json です。CANVAS_SESSION_FILE で変更することもできます。このファイルには、有効な canvas_session と pseudonym_credentials の Cookie、または OAuth アクセストークンが平文で保存されます。ファイルは所有者のみがアクセスできる権限(0600、0700 のディレクトリ内)で作成され、保存されるのはソルト付きダイジェストの認証情報バインディングのみです。ユーザー名、パスワード、リフレッシュトークンは書き込まれません。トークンモードと fetchproxy モードでは、キャッシュは書き込まれません。
ユーザー権限で動作するバックアップや同期ツールは、このファイルもコピーできます。共有マシンやバックアップ対象のマシンでは、CANVAS_SESSION_CACHE=false を設定すると、セッションをメモリ内だけに保持できます(その場合、起動するたびに再認証が行われます)。
モバイル QR コードを使った OAuth の初期設定
Canvas 管理者が個人用アクセストークンの作成を無効にしている(「モバイルアプリのみ」にトークンを制限している教育機関もあります)うえに、アカウントで SSO を使用しているためユーザー名とパスワードで認証できない場合は、公式 Canvas モバイルアプリと同じ QR ログインフローを使って OAuth 認証情報を取得できます。
-
Canvas の Web 画面で、アカウント → モバイルログイン用 QR を開きます。Canvas に 10 分間有効な QR コードが表示されます。
-
任意の QR リーダーで QR コードを読み取ります。結果は
sso.canvaslms.com上の URL で、https://sso.canvaslms.com/canvas/login?domain=...&code=...のような形式です。 -
同梱のヘルパーを実行します。
npx canvas-parent-mcp-qr-login "<decoded-qr-url>" >> .envヘルパーは Canvas の公開
mobile_verify.jsonエンドポイントにアクセスしてモバイルクライアントの client_id/client_secret を取得し、QR コードの 1 回限りのコードをアクセストークンとリフレッシュトークンのペアに交換して、CANVAS_BASE_URL/CANVAS_CLIENT_ID/CANVAS_CLIENT_SECRET/CANVAS_REFRESH_TOKENを標準出力に表示します。リフレッシュトークンは機密情報です。パスワードと同じように取り扱ってください。
この方法では、公式 Canvas Student/Parent アプリが使用するものと同じ SSO と OAuth のエンドポイントを再利用します。Canvas 側から見ると、取得したセッションはモバイルアプリのセッションとして扱われます。正当に管理しているアカウントに対してのみ使用してください。
ステータス
非公式です。Instructure とは提携していません。AI によって保守されています。
利用規約への同意
この MCP サーバーを使用することで、以下の事項を確認し、同意したものとみなされます。
1. このサーバーは、公式の Canvas REST API を介して、あなた自身の Canvas アカウントにアクセスします。 認証には、所属機関が発行した個人用アクセストークンを使用します。他のユーザーの履修登録、成績、メッセージにアクセスすることはなく、またアクセスできません。
2. このサーバーの利用には、所属機関独自の適正利用ポリシーに加えて、Instructure の Canvas API ポリシーが適用されます。 特に関連する条項は次のとおりです。
第三者に代わって当社の API を使用することはできません…競争目的で当社の API を使用またはアクセスすることはできません…当社の API、システム、または他のユーザーの利用を妨害することはできません…契約上の利用制限を回避することはできません。
レート制限については、「制限はユーザーのアクセストークンごとに適用されます…動的なスロットリングが行われます」とされています。データについては、「API を通じて取得したユーザー情報(履修登録、成績、プロフィール情報を含む)はすべて、非公開情報として扱う必要があります」とされています。
このサーバーでツールを呼び出すたびに、あなたはこれらの規約(メンテナーによる確認日:2026-05-23)に同意することになります。
3. 個人利用、オブザーバー/学生/保護者としての利用に限ります。 このプロジェクトは Instructure, Inc. またはいずれの学区とも、提携、推奨、後援、協力関係にありません。認証済みの Canvas ユーザー(通常は保護者オブザーバー)が、自分自身(または学生)の履修登録、課題、成績、お知らせを閲覧するための個人用自動化ツールです。学区のコースコンテンツを一括抽出したり、学生データを再配布したり、学生記録を使って AI モデルをトレーニングしたりする目的で使用しないでください。
4. FERPA と所属機関の AUP が適用されます。 学生の教育記録は、連邦法である家族教育権利およびプライバシー法(FERPA)によって保護されています。トークンによって適法なアクセスが認められている場合でも、データの保存、再配布、LLM への入力方法は規制の対象です。出力(成績、課題、コメント、会話)はすべて、機密性の高い学生データとして扱ってください。所属機関の適正利用ポリシーによって、自動アクセスにさらなる制限が設けられている場合があります。自動化する前に確認してください。
5. トークンはあなた専用です。 CANVAS_API_TOKEN を git にコミットしたり、共有チャットに貼り付けたりしないでください。公開された場合は、トークンを再発行してください。漏えいしたトークンを使うと、あなたのユーザーに付与された範囲の Canvas への全アクセスが可能になります。
6. このサーバーを Canvas アカウントと関連付けて使用した結果については、すべてあなたが責任を負うことに同意するものとします。 これには、レート制限(Canvas に負荷がかかっている場合、動的なスロットリングは文書化された制限を大幅に下回る段階で適用されます)、トークンの取り消し、アカウントへの警告、所属機関の管理者による調査、またはその他の措置が含まれます。Instructure または所属機関から使用を問題視された場合は、このサーバーの使用を中止してください。
このセクションは、メンテナーが誠実に規約を要約したものであり、法律上の助言ではありません。また、Instructure の実際の Canvas API ポリシーや所属機関のポリシーを変更または優先するものではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。