mcpField
C
canvas-lms-mcp-server

canvas-lms-mcp-server

ローカル
github.com/Fireiscoolsolo科学・教育1今日更新

canvas-lms-mcp-server について

複数デバイスの AI アプリから Canvas LMS を利用したい学生向けのリモート MCP サーバーです。209 個のツールに加え、OAuth 2.1 認証と複数コンピューター間のフェイルオーバーを備えています。

主な機能

  1. 01Canvas 用の 209 個のツール
  2. 02成績分析と学習計画
  3. 03プレビュー付き課題提出
  4. 04コースコンテンツとディスカッション
  5. 05OAuth 2.1 によるリモートアクセス
  6. 06複数コンピューター間のフェイルオーバー

活用シーン

  1. 01成績の確認と必要スコアの計算
  2. 02未提出課題の確認と週次計画
  3. 03プレビューを確認してから課題を提出

MCP 対応

Canvas LMS の操作を HTTP または stdio 経由の MCP ツールとして公開します。MCP クライアントは ngrok トンネルと OAuth 2.1 を使ってリモート接続できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"fireiscoolsolo-canvas-lms": {
"command": "npx",
"args": [
"-y",
"canvas-lms-mcp-remote"
],
"env": {
"CANVAS_API_TOKEN": "<CANVAS_API_TOKEN>",
"CANVAS_BASE_URL": "<CANVAS_BASE_URL>"
}
}
}
}
起動コマンドnpx -y canvas-lms-mcp-remote
設定が必要な環境変数
CANVAS_API_TOKENシークレットCanvas personal access token (Account > Settings > Approved Integrations > New Access Token)
CANVAS_BASE_URLYour school's Canvas address, e.g. https://yourschool.instructure.com

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmcanvas-lms-mcp-remote1.1.2

ツール

209

掲載時のツール一覧 · 1 日前に更新

このツールにパラメーターはありません。

詳細

ヒント

自分のコンピューターだけでローカル実行したいですか? 💻 ローカル版 → をご覧ください。同じ209個のツールを利用でき、ngrokもパスワードも不要で、セットアップは約5分です。

🌐 Canvas LMS MCP:リモート版

どのデバイスからでも、ウェブ、デスクトップ、モバイルでAI アシスタントからCanvasを利用できます。常時稼働し、パスワードで保護され、複数のコンピューター間で自動フェイルオーバーします。

209個のツール · OAuth 2.1 · ngrokトンネル · 複数コンピューター間のフェイルオーバー

npm npm downloads npm downloads per month Release downloads Tests Glama score GitHub stars Node.js MCP License: MIT Website PRs welcome

ウェブサイト · クイックスタート · 複数デバイスガイド · 設定 · ツール · セキュリティ

会話の例:期末試験で必要な点数と今週の提出物を尋ねる(サンプルデータ)


🤔 リモート版とローカル版、どちらを選ぶ?

🌐 リモート(このリポジトリ)💻 ローカル
対応環境リモートサーバーに対応した任意のMCPクライアント。どのデバイスでも利用可能このコンピューター上のデスクトップおよびコマンドラインのMCPクライアント
実行時バックグラウンドで常時稼働AIアプリが開いている間のみ
必要なものNode.js、Canvasトークン、ngrokアカウント、パスワードNode.js、Canvasトークン
インターネットへの公開パスワードで保護された公開HTTPSアドレスなし
複数コンピューター✅ 自動フェイルオーバー(ガイド)各コンピューターに個別にインストール

✨ 主な機能

  • 📊 成績分析:what_if_grade、compute_needed_score、grade_impact_ranking、完全な加重内訳
  • 📅 計画:get_week_ahead、semester_snapshot、study_priority_ranking、複数コースの未提出課題を 1 回の呼び出しで確認
  • 📝 提出:テキスト、URL、ファイルを提出できます。最初にドライランでプレビューできます
  • 💬 ディスカッションと受信トレイ:スレッド全体を 1 回のリクエストで読み込み、教員にメッセージを送信できます
  • 📁 コンテンツ:ファイル、ページ、モジュール、講義の字幕、完全な .imscc コースエクスポート
  • 🔐 セキュアなリモートアクセス:ngrok トンネル経由のパスワード保護された OAuth 2.1
  • 🔁 複数コンピューターでのフェイルオーバー:2 台以上のコンピューターで実行できます。1 台がスリープすると、別のコンピューターが約 1 分で引き継ぎます

🧭 仕組み

 Your AI app (web / desktop / mobile / CLI)
          │  HTTPS + OAuth
          ▼
   your-domain.ngrok-free.dev ──►  supervisor.js  ──►  index.js (127.0.0.1:3939/mcp)  ──►  Canvas API
                                   (keeps it alive,     (209 tools, OAuth,
                                    failover)            rate-limit aware)

🚀 クイックスタート

必要なもの: Node.js 18+、Canvas アカウント、無料の ngrok アカウント。

1. インストール

npm を使用する場合(最も簡単):

npm install -g canvas-lms-mcp-remote
mkdir canvas-mcp
cd canvas-mcp
canvas-lms-mcp-remote init

このフォルダーが設定フォルダーです。.env、ログイン情報、ログが保存されるため、以降の手順はすべてこのフォルダーから実行してください。

またはソースからインストール: git clone https://github.com/Fireiscoolsolo/canvas-lms-mcp-server.git を実行し、フォルダー内で npm install を実行します。git がない場合は、代わりに最新リリースから zip をダウンロードしてください。この場合、リポジトリのフォルダーが設定フォルダーになります。

すべてのコマンド
コマンド説明
canvas-lms-mcp-remote init現在のフォルダーに .env のテンプレートを作成します
canvas-lms-mcp-remoteスーパーバイザーを起動します:サーバー、ngrok トンネル、フェイルオーバー
canvas-lms-mcp-remote serve127.0.0.1 で HTTP サーバーのみを起動します(トンネルなし)
canvas-lms-mcp-remote --stdio標準入力/標準出力経由でサービスを提供します。サーバーを検査するディレクトリ向けです

ソースから実行する場合は、代わりに node supervisor.js と node index.js を使用します。

2. Canvas トークンを作成する

Canvas で Account → Settings → Approved Integrations → + New Access Token に移動します。Canvas でトークンが表示されるのは一度だけなので、すぐにコピーしてください。

3. ngrok を設定する
winget install --id Ngrok.Ngrok -e
ngrok update                                   # the winget version is often too old (ERR_NGROK_121)
ngrok config add-authtoken <your-ngrok-authtoken>

次に、ngrok ダッシュボードで無料の静的ドメインを取得します。例:your-name.ngrok-free.dev。

4. .env を設定する

init で作成された .env を編集します。ソースから実行する場合は、まず .env.example を .env にコピーしてください。次のコマンドでパスワードとシークレットを生成します。

node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"
5. 動作を確認する
canvas-lms-mcp-remote

ソースから実行する場合は、代わりに node supervisor.js を実行します。 active and serving at https://… と表示されるまで待ってから、Ctrl+C を押します。

6. ログオン時に自動実行する(Windows)

PowerShell で、設定フォルダーから実行します(ソースからインストールした場合はリポジトリのフォルダーから実行します)。

$dir      = (Get-Location).Path
$action   = New-ScheduledTaskAction -Execute "$dir\run-supervisor.cmd" -WorkingDirectory $dir
$trigger  = New-ScheduledTaskTrigger -AtLogOn -User "$env:USERDOMAIN\$env:USERNAME"
$settings = New-ScheduledTaskSettingsSet -RestartCount 999 -RestartInterval (New-TimeSpan -Minutes 1) -ExecutionTimeLimit ([TimeSpan]::Zero) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -MultipleInstances IgnoreNew
Register-ScheduledTask -TaskName CanvasSupervisor -Action $action -Trigger $trigger -Settings $settings -Force
Start-ScheduledTask -TaskName CanvasSupervisor

**npm からインストールした場合は、**代わりに次の $action 行を使用します。

$action = New-ScheduledTaskAction -Execute 'cmd.exe' -Argument '/c call "%APPDATA%\npm\canvas-lms-mcp-remote.cmd" >> supervisor.log 2>&1' -WorkingDirectory $dir

run-supervisor.cmd は、Node が C:\Program Files\nodejs\node.exe にあることを前提としています。別の場所にある場合は、このファイルを編集してください。Linux では systemd ユーザーサービスとして実行してください(例)。macOS では、launchd または pm2 の下で node supervisor.js を実行してください。

7. すべてのデバイスで AI アプリを接続する

AI アプリの設定で、URL https://<your-domain>/mcp を指定してカスタムコネクター(リモート MCP サーバーとも呼ばれます)を追加し、パスワードでログインします。コネクターをアカウントに同期するアプリでは、スマートフォンやデスクトップにも表示されます。コマンドラインおよびエディターのクライアントでは、同じ URL を使って HTTP MCP サーバーとして追加できます。

次に、アシスタントに 「Run test_connection.」 と指示します。

🔁 複数のコンピューター

同じサーバーを 2 台以上のコンピューターで実行できます。たとえば、デスクトップとノートパソコンで実行すると、片方がオフまたはスリープ状態でもオンラインを維持できます。1 台がサービスを提供し、ほかのコンピューターはスタンバイ状態で待機して、自動的に引き継ぎます。

➡️ 手順に沿って複数デバイスのセットアップガイドを確認してください。 設定の安全なコピー方法、共有 ngrok アカウント、スケジュールされたタスク、動作確認、フェイルオーバーのテスト、コードの更新、シークレットの変更について説明しています。

⚙️ 設定

すべての設定は .env の環境変数です。.env.example を参照してください。

変数必須デフォルト説明
CANVAS_API_TOKEN✅—Canvas の個人用アクセストークン
CANVAS_BASE_URL✅—例:https://yourschool.instructure.com
CANVAS_MCP_PUBLIC_URL✅—ngrok の静的ドメイン
CANVAS_MCP_PASSWORD✅—OAuth ログインページのパスワード
CANVAS_MCP_CLUSTER_SECRET✅—コンピューター間の連携に使われる /internal/* エンドポイントを保護するシークレット
CANVAS_ALLOW_WRITEStruefalse = 読み取り専用モード
CANVAS_PROFILEfullcore = 厳選されたツールのサブセット
CANVAS_CACHE_TTL60レスポンスキャッシュの保持時間(秒)
CANVAS_TIMEZONEsystem期限日の計算に使用する IANA タイムゾーン
CANVAS_DOWNLOAD_DIR./canvas-downloadsダウンロードツールがファイルを保存する場所
CANVAS_MCP_HOST / _PORT127.0.0.1 / 3939バインドアドレス
CANVAS_MCP_OAUTH_STORE_PATH./oauth-store.jsonトークンストア
CANVAS_MCP_NGROK_PATHwinget pathngrok.exe へのパス
CANVAS_MCP_TRANSPORThttpstdio(または --stdio フラグ)を指定すると、HTTP ではなく stdin/stdout 経由で提供します。サーバーを検査するディレクトリで使用します。日常的なローカル利用については、ローカル版を参照してください

🧰 ツール

グループ数主な機能
ID24check_token_expiry、get_rate_limit_status、カスタムデータの保存
コース16権限、ニックネーム、お気に入り
課題12list_missing_submissions、get_late_policy
提出物16テキスト、URL、ファイルの提出、コメント、ルーブリック評価
成績13what_if_grade、compute_needed_score、grade_impact_ranking
小テスト12読み取り専用:日程、受験状況、レビュー
ディスカッション17get_full_topic_view、返信、評価
受信トレイ14メッセージ、find_recipients、スレッド
カレンダー11イベント、オフィスアワーの予約
コンテンツ33ファイル、ページ、モジュール、字幕、.imscc のエクスポート
グループ11グループ作業スペース
ルーブリック11ピアレビュー
検索3キーワードによるフォールバック機能を備えた smart_search
計画11get_week_ahead、semester_snapshot、study_priority_ranking
メタ4上記にない任意のエンドポイントに対応する raw_canvas_request

🔐 セキュリティ

  • 確認ゲート: 送信、提出、投稿、削除を行うツールは、まずプレビューを返します。confirm: true を指定して呼び出した場合にのみ操作します。
  • プロンプトインジェクション対策: 他の人が書いたテキストは <<<CANVAS_CONTENT>>> マーカーで囲み、信頼できない内容として明示します。
  • 小テストへの回答なし: 小テストの受験エンドポイントは意図的に含めていません。
  • ループバック接続のみ: サーバーは 127.0.0.1 で待ち受けます。外部から接続する唯一の方法はトンネル経由です。
  • OAuth 2.1: ログイン試行は IP ごとに 15 分あたり 10 回までに制限されます。アクセストークンの有効期間は 1 時間で、リフレッシュトークンは使用するたびに置き換えられます。
  • 連携用の個別シークレット: コンピューター間の連携に使うエンドポイントには、別途共有シークレットが必要です。比較は一定時間で行われます。

絶対にコミットしないでください: .env、oauth-store.json、supervisor.log。これらはすでに .gitignore に登録されています。SECURITY.md を参照してください。

🎓 責任ある利用

これは学習と整理のためのツールです。締め切りの確認、成績の理解、週の計画作成に役立ちます。小テストへの回答は行わず、プレビューを確認して承認するまで、何も送信または提出されません。

  • 学校の学術倫理および利用規定に従ってください。個人用 API トークンやサードパーティ製ツールを制限している学校もあります。
  • 変更が誤って行われるリスクをゼロにしたい場合は、読み取り専用モードにするため CANVAS_ALLOW_WRITES=false を設定してください。

🛠️ トラブルシューティング

症状対処方法
ERR_NGROK_121ngrok のバージョンが古すぎます。ngrok update を実行してください
ERR_NGROK_334 … already online別のコンピューターまたは残存している ngrok.exe がドメインを使用しています。待機用コンピューターでは正常な動作です
ERR_NGROK_3200(エンドポイントがオフライン)サービスを提供しているコンピューターがありません。supervisor.log を確認してください
ログイン時に ngrok に「これからアクセスしようとしています…」というページが表示される無料プランでは正常です。サイトにアクセスをクリックしてください
startup probe failedCANVAS_BASE_URL とインターネット接続を確認してください
Canvas が 401 を返すトークンの有効期限が切れています。新しいトークンを作成してください
新しいツールが表示されないコネクターを再接続するか、AI アプリを再起動してください

複数のコンピューターを使用する場合のその他の問題については、マルチデバイスガイドをご覧ください。

適切に再起動してください。 Stop-ScheduledTask だけでは、プロセスが実行中のまま残ることがあります:

Stop-ScheduledTask -TaskName CanvasSupervisor -ErrorAction SilentlyContinue
Get-CimInstance Win32_Process -Filter "Name='node.exe'" | Where-Object { $_.CommandLine -match 'supervisor\.js|index\.js' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }
Get-Process ngrok -ErrorAction SilentlyContinue | Stop-Process -Force
Start-ScheduledTask -TaskName CanvasSupervisor

既知の制限: 学生用トークンでは、管理者用エンドポイント、成績表の履歴、コース分析、クイズの統計情報にアクセスできません。smart_search は Canvas のベータ機能で、404 が返されることがよくあります。

📄 ライセンス

MIT。このプロジェクトは Instructure とは関係ありません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。