Canvas API MCP について
Canvas API MCPは、学生向けの課題管理のためにAIクライアントを個人のCanvas LMSアカウントへ接続します。日常的な授業用ツールに加え、Canvasインスタンスで利用可能なAPIエンドポイントを検索・呼び出せます。
主な機能
- 01締切と成績の確認
- 02コースのファイルと内容の閲覧
- 03課題の確認と提出
- 04ディスカッションの閲覧と返信
- 05Canvas APIエンドポイントの検索と呼び出し
活用シーン
- 01直近の課題と締切を確認する
- 02講義ファイルやシラバスを読む
- 03課題へのフィードバックを確認する
- 04あまり使われないCanvas API操作を探す
MCP 対応
MCPサーバーはCanvas LMSのデータと操作をツールとして公開し、プロンプトとリソースも提供します。個人アクセストークンで本人のアカウントに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx canvas-api-mcpCANVAS_BASE_URLBase URL of your Canvas LMS instance, e.g. https://yourschool.instructure.comCANVAS_TOKENシークレットCanvas API access token (Canvas: Account > Settings > New Access Token)CANVAS_MAX_PAGESOptional cap on the number of pages fetched per paginated Canvas API callローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
19掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| course_id | integer | はい | my_courses のコース ID |
詳細
canvas-api-mcp
課題の締め切りをもう逃しません。
AI に締め切りを尋ねると、Canvas から直接回答を読み取ります。
実際の締め切り、実際の提出状況を確認でき、情報をコピーして移す必要はありません。
Canvas LMS 用の MCP サーバーです。日々の学生生活で使える厳選された 16 個のツールに加え、お使いの Canvas インスタンスが公開しているすべてのエンドポイントにアクセスできるゲートウェイを備えています。
📖 ドキュメント:mcp.johannsenlum.com/canvas-lms · インストールガイド · ツールリファレンス · スキル · コンプライアンス
個人利用向けソフトウェアです。 Canvas の API ポリシーでは、複数の人が利用するアプリケーションに OAuth が求められます。また、Canvas OAuth はローカルにインストールするソフトウェアでは安全に実装できません(PKCE がなく、
client_secretをパッケージに含めて配布できないためです)。 ご自身のアカウントで、ご自身のトークンを使ってください。コンプライアンスをご覧ください。
どんなことを尋ねられるか
実際のプロンプトと、それに回答するツールです。
あなた: 今週の締め切りは何ですか? Claude: (
whats_dueを呼び出し):締め切りが 3 件あります。Problem Set 4(木曜、CS3230)、ディスカッションへの返信(金曜、IS4302)、Milestone 2 のレポート(日曜、EE2211)です。
あなた: データベースの授業の成績はどうですか? また、週 6 のシラバスには何が載っていますか? Claude: (
my_grades、続いてget_syllabus、さらに週 6 のモジュールについてcourse_contentを呼び出し):総合成績は 87% です。週 6 では正規化を扱い、金曜締め切りのリーディング課題とラボファイルがあります。
あなた: 第 8 回講義の PDF ノートを要約して、フィードバックを確認できるようにエッセイの提出物を開いてください。 Claude: (PDF に対して
list_filesとread_fileを呼び出し、続いてエッセイに対してmy_submissionを呼び出し):...
あなた: 「Project teams」のディスカッションに返信して、グループミーティングは午後 3 時以降なら参加できると伝えてください。 Claude: (
post_discussion_reply✏️ を呼び出し):スレッドに投稿しました。
あなた: Canvas で、学期全体にわたるクイズの問題別統計を確認できますか? Claude: (適切なエンドポイントを見つけるために
search_canvas_apiを呼び出し、続いてcanvas_requestで呼び出し):...
最後の例がゲートウェイツールの要点です。お使いの Canvas インスタンスにエンドポイントが存在すれば、厳選されたツールは 16 個だけでも、search_canvas_api で見つけて canvas_request で呼び出せます。
インストール
前提条件
-
Python 3.11+
-
Canvas の個人アクセストークン。所属機関で学生によるトークン作成が許可されている必要があります。Canvas → Account → Settings → Approved Integrations に 「+ New access token」 ボタンがあるか確認してください。スクリーンショット付きの詳しい手順はこちらをご覧ください: mcp.johannsenlum.com/canvas-lms/install。
トークンには有効期限があることにご注意ください。 Instructure による 2025 年 10 月のセキュリティ更新以降、学生ロールのみを持つアカウントでは、有効期限を 120 日以内に設定する必要があります。また、機関によってはさらに短い期間に制限されています(NUS では 90 日です)。有効期限を書き留めておきましょう。期限切れのトークンでは、すべてのツールが一斉に
401を返すため、認証情報の期限切れではなく、インストールが壊れたように見えてしまいます。
サーバーの実行
canvas-api-mcp は PyPI で公開されています。次のコマンドで実行します:
uvx canvas-api-mcp
ソースからインストール(コントリビューター/未リリースの main)。 上記の通常のインストール手順には含まれません。公開済みの PyPI リリースではなく、最新の未リリースコードを使いたい場合にのみ必要です:
uvx --from git+https://github.com/JohannsenLum/canvas-api-mcp canvas-api-mcp
または、ローカルクローンから実行します:
git clone https://github.com/JohannsenLum/canvas-api-mcp
cd canvas-api-mcp
uv sync
クイックインストール(ワンクリック)
ワンクリックのディープリンクが利用できるのは Cursor、VS Code、LM Studio のみです。その他のクライアントには、ドキュメント化されたインストールリンク形式がありません。以下の設定があらかじめ入力されますが、その後 CANVAS_BASE_URL と CANVAS_TOKEN を入力する必要があります。
すべてのクライアント(手動設定)
トークンはご自身のマシン上の設定ファイルに保存されます。Canvas インスタンスに直接送信される場合を除き、外部に送信されることはありません。
| クライアント | ディープリンク? |
|---|---|
| Claude Code | いいえ |
| Claude Desktop | いいえ |
| Cursor | はい、上記 |
| VS Code | はい、上記 |
| LM Studio | はい、上記 |
| Zed | いいえ |
| Windsurf | いいえ(Windsurf は独自のレジストリ内のサーバーのみを解決します) |
Claude Code:~/.claude.json
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-api-mcp"],
"env": {
"CANVAS_BASE_URL": "https://canvas.yourschool.edu",
"CANVAS_TOKEN": "your-token-here"
}
}
}
}
Claude Desktop:claude_desktop_config.json
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
Claude Desktop にはワンクリックでインストールする方法がありません(ディープリンクではなく .mcpb バンドルをインストールします)。Settings → Developer → Edit Config からこの JSON をコピーして貼り付けてください。
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-api-mcp"],
"env": {
"CANVAS_BASE_URL": "https://canvas.yourschool.edu",
"CANVAS_TOKEN": "your-token-here"
}
}
}
}
Cursor:~/.cursor/mcp.json
上のボタンが使えない場合、または直接貼り付けたい場合の代替手順です。
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-api-mcp"],
"env": {
"CANVAS_BASE_URL": "https://canvas.yourschool.edu",
"CANVAS_TOKEN": "your-token-here"
}
}
}
}
VS Code:.vscode/mcp.json
上のボタンが使えない場合、または直接貼り付けたい場合の代替手順です。VS Code では mcpServers ではなく servers キーを使用します。
{
"servers": {
"canvas": {
"type": "stdio",
"command": "uvx",
"args": ["canvas-api-mcp"],
"env": {
"CANVAS_BASE_URL": "https://canvas.yourschool.edu",
"CANVAS_TOKEN": "your-token-here"
}
}
}
}
LM Studio:mcp.json(Program → Install → Edit mcp.json)
上のボタンが使えない場合、または直接貼り付けたい場合の代替手順です。
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-api-mcp"],
"env": {
"CANVAS_BASE_URL": "https://canvas.yourschool.edu",
"CANVAS_TOKEN": "your-token-here"
}
}
}
}
Zed:settings.json
Zed にはディープリンクがありません。Zed の設定で context_servers の下にこれを追加してください。
{
"context_servers": {
"canvas": {
"source": "custom",
"command": "uvx",
"args": ["canvas-api-mcp"],
"env": {
"CANVAS_BASE_URL": "https://canvas.yourschool.edu",
"CANVAS_TOKEN": "your-token-here"
}
}
}
}
Windsurf:~/.codeium/windsurf/mcp_config.json
Windsurf にはディープリンクがありません。独自のレジストリ内のサーバーのみを解決するため、Windsurf Settings → MCP Servers → Edit raw config から手動で貼り付ける必要があります。
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-api-mcp"],
"env": {
"CANVAS_BASE_URL": "https://canvas.yourschool.edu",
"CANVAS_TOKEN": "your-token-here"
}
}
}
}
ツール
| ツール | 機能 |
|---|---|
whoami | 各コースでの本人確認と役割 |
get_calendar_feed_url | 個人用カレンダーの .ics リンク(要求された場合のみ) |
my_courses | コード、学期、役割を含む履修中のコース |
whats_due | 期限が近い順にすべての提出物を表示 |
my_grades | コースごとの現在のスコア |
list_assignments | コースの課題と提出状況 |
get_assignment | ルーブリックを含む課題の詳細 |
my_submission | 自分の提出物、スコア、フィードバック |
submit_assignment ✏️ | 課題を提出 |
course_announcements | 最近のお知らせ |
course_content | モジュールとその内容 |
list_files | コース内のファイル |
read_file | PDF/DOCX/PPTX/テキストからテキストを抽出 |
get_page | スラッグで Canvas の Wiki ページを取得 |
get_syllabus | コースのシラバス |
read_discussion | トピック、または特定のトピックへの返信 |
post_discussion_reply ✏️ | ディスカッションに投稿 |
search_canvas_api | キーワードで任意のエンドポイントを検索(ゲートウェイ) |
canvas_request ✏️ | 任意のエンドポイントを実行(ゲートウェイ) |
✏️ は Canvas への書き込みを行います。書き込みツールは合計 3 つです:submit_assignment、post_discussion_reply、および GET 以外のメソッドで呼び出した場合の canvas_request(canvas_request の GET 呼び出しは読み取り専用です)。
search_canvas_api と canvas_request を使うと、インスタンスが公開する約 1,116 個すべてのエンドポイントにアクセスできます。実行できる操作は、トークンの権限に基づいて Canvas が決定します。教師用トークンを使えば、このサーバーに変更を加えなくても教育者向けエンドポイントが利用できます。
プロンプト
week_ahead、study_pack、grade_check。
リソース
canvas://me、canvas://courses、canvas://api/catalog。
スキル
クライアントがスキル の規約に対応している場合:
npx skills add JohannsenLum/canvas-api-mcp
その他の教育機関
CANVAS_BASE_URL を設定すれば、どの Canvas インスタンスでも動作します。約1,116件の
エンドポイントのカタログは、パッケージ内の
canvas_api_mcp/data/catalog.json に含まれています。デプロイ環境の正確な機能
セットに合わせるには、再生成してください:
python scripts/build_catalog.py https://canvas.yourschool.edu -o data/catalog.json
コンプライアンス
- 学問の誠実性。
submit_assignmentは、AI 生成の課題を含め、あらゆる内容を提出できます。自分のものではない課題を提出することは、実質的にすべての教育機関の学問の誠実性に関する規則に違反し、Canvas の API ポリシーでも、そのような規則に違反する利用を明示的に禁止しています。責任は利用者にあります。 - レート制限。 クライアントは、Canvas が公開しているクォータに従ってリクエストを調整します。これを削除しないでください。API に過度な負荷をかけることは禁止されています。
- コース教材。
read_fileは、自分の学習用に教材を取得します。再配布しないでください。 - トークンはパスワードと同等です。 トークンを使うと、自分の成績を読み取ったり、自分として課題を提出したりできます。有効期限を設定してください。決してコミットしないでください。
- 個人利用の範囲。 フェーズ1では、自分のトークンを使う単一の学生を対象としています。教育者向けに厳選したツールはありません。Canvas の OAuth フローには PKCE がないため、このローカルインストール型サーバーでは、Canvas の API ポリシーがより広い用途に求めるマルチユーザー OAuth を実装できません。これをマルチテナントサービスとして再パッケージしないでください。
開発
uv sync
uv run pytest -v
# Live tests against your real account (read-only)
CANVAS_LIVE_TESTS=1 uv run pytest tests/test_live.py -v
環境変数:CANVAS_BASE_URL、CANVAS_TOKEN、任意の
CANVAS_MAX_PAGES(デフォルトは10)とCANVAS_TIMEOUT(秒、デフォルトは30)。
env.template を参照してください。
コントリビューション
問題の報告やプルリクエストを歓迎します。セットアップ、変更前に把握しておくべきアーキテクチャ上のルール、新しい厳選ツールを追加する際の基準については、CONTRIBUTING.md を参照してください。
セキュリティ上の問題を見つけましたか?公開の問題として報告しないでください。 非公開での報告方法についてはSECURITY.md を参照してください。このプロジェクトはパスワードと同等の Canvas トークンを扱うため、特に重要です。
変更はCHANGELOG.md に記録されます。
ライセンス
MIT © 2026 Johannsen Lum.
自由に利用、変更、再配布し、商用のものを構築できます。唯一の条件は、著作権表示とライセンス文を保持することです。いかなる種類の保証もありません。
コントリビューションにも同じライセンスが適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。