canvas-lms-mcp-local について
canvas-lms-mcp-localは、Canvasを使う学生向けのローカルMCPサーバーで、コース、成績、課題の確認や学習計画を支援します。ネットワークポートを開かずstdioで接続し、書き込み操作はプレビュー後に確認を求めます。
主な機能
- 01コース・課題・期限の確認
- 02成績分析と目標スコアの計算
- 03テキスト・リンク・ファイルの提出
- 04ディスカッション・受信箱・教材の閲覧
- 05書き込み操作の事前プレビューと確認
活用シーン
- 01今週期限の課題をコース横断で整理
- 02期末試験で必要な点数を試算
- 03成績への影響が大きい未提出課題を特定
MCP 対応
ローカルMCPサーバーとしてstdio経由でデスクトップおよびコマンドラインのMCPクライアントに接続し、Canvas APIを呼び出します。Canvasアクセストークンで認証します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y canvas-lms-mcp-localCANVAS_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
209掲載時のツール一覧 · 1 日前に更新
このツールにパラメーターはありません。
詳細
ヒント
スマートフォンやウェブ、複数のコンピューターで使いたいですか? **🌐 リモート版 →**をご覧ください。209 個のツールはそのままに、パスワードで保護された ngrok トンネル経由で提供され、コンピューター間の自動フェイルオーバーにも対応しています。
💻 Canvas LMS MCP:ローカル版
お使いのコンピューター上で、AI アシスタントから Canvas を利用できます。トンネルもパスワードもバックグラウンドサービスも不要です。
209 個のツール · 設定ファイル 1 つ · インターネットには一切公開されません
ウェブサイト · クイックスタート · 設定 · ツール · トラブルシューティング
🤔 ローカル版とリモート版のどちらを選びますか?
| 💻 ローカル(このリポジトリ) | 🌐 リモート | |
|---|---|---|
| 対応クライアント | このコンピューター上のデスクトップおよびコマンドライン MCP クライアント | どのデバイスからでも、リモートサーバーに対応した任意の MCP クライアント |
| 実行時 | AI アプリが起動している間のみ。アプリがサーバーを起動します | バックグラウンドで常時稼働 |
| 必要なもの | Node.js と Canvas トークン | Node.js、Canvas トークン、ngrok アカウント、パスワード |
| インターネットへの公開 | なし:ポートは開きません | パスワードで保護された公開 HTTPS アドレス |
| 複数のコンピューター | それぞれのコンピューターに個別にインストール | コンピューター間の自動フェイルオーバー機能を内蔵 |
| セットアップ時間 | 約 5 分 | 約 15 分。追加のコンピューター 1 台につき約 5 分 |
✨ 特長
- 📊 成績分析:
what_if_grade、compute_needed_score、grade_impact_ranking、加重方式による詳細な内訳 - 📅 計画:
get_week_ahead、semester_snapshot、study_priority_ranking、複数コースの未提出課題を 1 回の呼び出しで確認 - 📝 提出:テキスト、URL、ファイルを提出。最初にドライランでプレビューできます
- 💬 ディスカッションと受信トレイ:リクエスト 1 回でスレッド全体を読み、教員にメッセージを送信
- 📁 コンテンツ:ファイル、ページ、モジュール、講義の字幕、コース全体の
.imsccエクスポート
🧭 仕組み
Your AI app (MCP client) ──stdio──► node index.js ──HTTPS──► your school's Canvas API
(starts the server) (209 tools, runs only
while your app is open)
ウェブサーバーもポートもなく、稼働し続けるサービスも不要です。AI アプリを開くとサーバーが起動し、アプリを閉じると停止します。
🚀 クイックスタート
必要なもの: Node.js 18+ と Canvas アカウント。自分でダウンロードするものはありません。AI アプリが npx でサーバーを取得します。
1. Canvas アクセストークンを作成する
Canvas で Account → Settings → Approved Integrations → + New Access Token の順に移動します。Canvas でトークンが表示されるのは一度だけなので、すぐにコピーしてください。学生用トークンの有効期限は通常 30~120 日です。
2. AI アプリに追加する
デスクトップアプリ
-
アプリの MCP 設定ファイルを開きます。通常は 設定 → 開発者 または 設定 → MCP サーバー にあり、多くのアプリでは
mcpServersJSON ブロックを使用します。 -
トークンと学校のアドレスを指定して、この
canvasエントリーを追加します(mcp_config.example.jsonにもあります)。{ "mcpServers": { "canvas": { "command": "npx", "args": ["-y", "canvas-lms-mcp-local"], "env": { "CANVAS_API_TOKEN": "your_token_here", "CANVAS_BASE_URL": "https://yourschool.instructure.com" } } } } -
アプリを完全に終了します。Windows では、システムトレイのアイコンを右クリックして 終了 を選択します。macOS では、⌘Q を押します。その後、アプリを再度開きます。ウィンドウを閉じるだけでは不十分です。
コマンドラインクライアント
CANVAS_API_TOKEN と CANVAS_BASE_URL を環境変数に設定し、このコマンドを canvas という名前の stdio MCP サーバーとして登録します。
npx -y canvas-lms-mcp-local
その後、クライアントの MCP ステータスを確認し、接続されていることを確かめます。
3. 試してみる
アシスタントに 「Run test_connection.」 と尋ねます。ユーザー情報、コース、プランナー、受信トレイ、未提出の課題を確認し、学校で無効になっている機能があれば報告します。
次に、「今週の締め切りは?」、「最終試験で B を取るには何点必要?」、または 「成績に最も影響している未提出課題はどれ?」 と尋ねてみましょう。
ソースから実行する場合
git clone https://github.com/Fireiscoolsolo/canvas-lms-mcp-local.git
cd canvas-lms-mcp-local
npm install
.env.example を .env にコピーし、index.js と同じフォルダーに置きます。トークンと学校のアドレスを入力したら、npx の代わりにこのファイルを指定するよう設定を変更します。
{ "mcpServers": { "canvas": { "command": "node", "args": ["C:/Users/YOUR-NAME/Documents/canvas-lms-mcp-local/index.js"] } } }
Windows ではスラッシュ(/)を使用できます。macOS ではパスは /Users/you/canvas-lms-mcp-local/index.js のようになります。Windows では、ファイル名が .env.txt ではなく .env になっていることを確認してください。確認するには、エクスプローラーで 表示 → ファイル名拡張子 を有効にします。
⚙️ 設定
ステップ 2 のように、設定の env ブロックに設定値を記述します。ソースから実行する場合は、代わりに index.js と同じ場所にある .env を使用できます。
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
CANVAS_API_TOKEN | ✅ | — | Canvas の個人用アクセストークン |
CANVAS_BASE_URL | ✅ | — | 例:https://yourschool.instructure.com |
CANVAS_ALLOW_WRITES | true | false = 読み取り専用モード | |
CANVAS_PROFILE | full | core = 厳選されたツールのサブセット | |
CANVAS_CACHE_TTL | 60 | レスポンスのキャッシュ時間(秒) | |
CANVAS_TIMEZONE | system | 締め切り日時の計算に使う IANA タイムゾーン | |
CANVAS_DOWNLOAD_DIR | index.js と同じ場所にある canvas-downloads | ダウンロードツールがファイルを保存する場所 |
🧰 ツール
| グループ | 数 | 主な機能 |
|---|---|---|
| ユーザー情報 | 24 | check_token_expiry、get_rate_limit_status、カスタムデータの保存 |
| コース | 16 | 権限、ニックネーム、お気に入り |
| 課題 | 12 | list_missing_submissions、get_late_policy |
| 提出物 | 16 | テキスト、URL、ファイルの提出、コメント、ルーブリック評価 |
| 成績 | 13 | what_if_grade、compute_needed_score、grade_impact_ranking |
| 小テスト | 12 | 読み取り専用:日程、受験履歴、レビュー |
| ディスカッション | 17 | get_full_topic_view、返信、評価 |
| 受信トレイ | 14 | メッセージ、find_recipients、スレッド |
| カレンダー | 11 | イベント、オフィスアワーの予約 |
| コンテンツ | 33 | ファイル、ページ、モジュール、字幕、.imscc エクスポート |
| グループ | 11 | グループ作業スペース |
| ルーブリック | 11 | ピアレビュー |
| 検索 | 3 | キーワードによるフォールバック機能付きの smart_search |
| 計画 | 11 | get_week_ahead、semester_snapshot、study_priority_ranking |
| メタ | 4 | 上記にない任意のエンドポイントに対する raw_canvas_request |
🔐 セキュリティ
- 外部には公開されません: サーバーはどのポートでも待ち受けません。起動したアプリだけが、プライベートなパイプを通じてサーバーと通信できます。
- 確認ゲート: 送信、提出、投稿、削除を行うツールは、まずプレビューを返し、
confirm: trueを指定して呼び出された場合にのみ処理を実行します。 - プロンプトインジェクション対策: 他の人が書いたテキストは
<<<CANVAS_CONTENT>>>マーカーで囲み、信頼できないテキストとしてラベル付けします。 - 小テストの受験はできません: 小テストの受験エンドポイントは意図的に含めていません。
.envは絶対にコミットしないでください。 すでに.gitignoreに記載されています。SECURITY.md を参照してください。
🎓 責任ある利用
これは学習と整理のためのツールです。締め切りの確認、成績の把握、週の計画に役立ちます。クイズに回答することはなく、プレビューを確認して承認するまでは、何も送信・提出されません。
- 学校の学業上の誠実さおよび利用規定を守ってください。学校によっては、個人用 API トークンやサードパーティ製ツールの使用が制限されています。
- 誤操作による変更のリスクをゼロにしたい場合は、読み取り専用モードにするため
CANVAS_ALLOW_WRITES=falseを設定してください。
🛠️ トラブルシューティング
| 症状 | 対処方法 |
|---|---|
| アプリに Canvas ツールが表示されない | 設定が有効な JSON であり、index.js へのパスが絶対パスであることを確認してから、アプリを完全に終了して再起動してください |
spawn npx ENOENT / 「npx」が見つからない | Node.js をインストールしてから、アプリを再起動してください。それでも解決しない場合は、command に完全なパスを指定してください。例:"C:/Program Files/nodejs/npx.cmd" |
| 初回起動が遅い | 初回は npx がパッケージをダウンロードします。2 回目以降の起動は速くなります |
| 「CANVAS_API_TOKEN is not set」 | 設定の canvas エントリにある env ブロックに追加してください。ソースから実行する場合は、.env が index.js と同じ場所にあり、ファイル名が .env.txt ではないことを確認してください |
| Canvas が 401 を返す | トークンの有効期限が切れています。新しいトークンを作成してください(手順 2) |
index.js への変更が反映されない | 接続時にツール一覧が読み込まれるため、AI アプリを再起動してください |
| ログの保存場所は? | AI アプリの MCP ログフォルダーです。このサーバーのすべての行は [canvas-mcp] で始まります |
既知の制限: 学生用トークンでは、管理者向けエンドポイント、成績表の履歴、コース分析、クイズの統計情報にはアクセスできません。smart_search は Canvas のベータ機能であり、404 を返すことがよくあります。
📄 ライセンス
MIT。このプロジェクトは Instructure とは提携していません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。