mcpField
C
Canvas API MCP

Canvas API MCP

ローカル
github.com/JohannsenLum科学・教育311 週間前に更新

Canvas API MCP について

Canvas API MCPは、学生向けの課題管理のためにAIクライアントを個人のCanvas LMSアカウントへ接続します。日常的な授業用ツールに加え、Canvasインスタンスで利用可能なAPIエンドポイントを検索・呼び出せます。

主な機能

  1. 01締切と成績の確認
  2. 02コースのファイルと内容の閲覧
  3. 03課題の確認と提出
  4. 04ディスカッションの閲覧と返信
  5. 05Canvas APIエンドポイントの検索と呼び出し

活用シーン

  1. 01直近の課題と締切を確認する
  2. 02講義ファイルやシラバスを読む
  3. 03課題へのフィードバックを確認する
  4. 04あまり使われないCanvas API操作を探す

MCP 対応

MCPサーバーはCanvas LMSのデータと操作をツールとして公開し、プロンプトとリソースも提供します。個人アクセストークンで本人のアカウントに接続します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"johannsenlum-canvas-api": {
"command": "uvx",
"args": [
"canvas-api-mcp"
],
"env": {
"CANVAS_BASE_URL": "<CANVAS_BASE_URL>",
"CANVAS_TOKEN": "<CANVAS_TOKEN>",
"CANVAS_MAX_PAGES": "<CANVAS_MAX_PAGES>"
}
}
}
}
起動コマンドuvx canvas-api-mcp
設定が必要な環境変数
CANVAS_BASE_URLBase URL of your Canvas LMS instance, e.g. https://yourschool.instructure.com
CANVAS_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypicanvas-api-mcp1.1.0

ツール

19

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
course_idintegerはいmy_courses のコース ID

詳細

canvas-api-mcp

課題の締め切りをもう逃しません。

AI に締め切りを尋ねると、Canvas から直接回答を読み取ります。
実際の締め切り、実際の提出状況を確認でき、情報をコピーして移す必要はありません。

Canvas LMS 用の MCP サーバーです。日々の学生生活で使える厳選された 16 個のツールに加え、お使いの Canvas インスタンスが公開しているすべてのエンドポイントにアクセスできるゲートウェイを備えています。

ターミナル。質問 1:「今学期はどの科目を取っている?」厳選ツールの my_courses が即座に回答(CS3230、CS2040S、MA2001、GEA1000)。質問 2:「どのグループに入っている?」対応する厳選ツールがないため、search_canvas_api が 1,116 個の Canvas エンドポイントから GET /v1/users/self/groups を見つけ、canvas_request が実行します。18 個のツール · アクセス可能なエンドポイント 1,116 個 · テスト 149 件 · MIT。

📖 ドキュメント:mcp.johannsenlum.com/canvas-lms · インストールガイド · ツールリファレンス · スキル · コンプライアンス

PyPI Python 3.11+ License: MIT MCP Registry GitHub stars

個人利用向けソフトウェアです。 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 を入力する必要があります。

Cursor に追加 VS Code に追加 LM Studio に追加

すべてのクライアント(手動設定)

トークンはご自身のマシン上の設定ファイルに保存されます。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_filePDF/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.

自由に利用、変更、再配布し、商用のものを構築できます。唯一の条件は、著作権表示とライセンス文を保持することです。いかなる種類の保証もありません。

コントリビューションにも同じライセンスが適用されます。

コメント

MCP は初めてですか?

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

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