mcpField
C
Canvas LMS (Local-First)

Canvas LMS (Local-First)

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

Canvas LMS (Local-First) について

Canvas LMSのコース、課題、期限、成績などを対応クライアントから扱える、ローカル優先のMCPサーバーです。学生、教育者、MCP開発者向けで、stdioで公式APIに接続し、トークンをローカルに保持します。

主な機能

  1. 01コースと課題の一覧表示
  2. 02モジュール、アナウンス、ページの取得
  3. 03成績、予定、ToDoの確認
  4. 04コースファイルの一括ダウンロード
  5. 05stdioでのローカル実行

活用シーン

  1. 01複数コースの今週の課題を集約
  2. 02来週のイベントとプランナー項目を確認
  3. 03コースごとの現在の成績を確認
  4. 04オフラインインデックス用にコース内容を取得

MCP 対応

Claude CodeやClaude Desktopなどの対応クライアントに、stdio経由でCanvasの照会ツールを提供します。ローカル設定を読み込み、外部のトークン仲介なしでCanvas公式APIを呼び出します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"canvas-mcp-admin978": {
"command": "uvx",
"args": [
"canvas-local-mcp"
],
"env": {
"CANVAS_BASE_URL": "<CANVAS_BASE_URL>",
"CANVAS_TOKEN": "<CANVAS_TOKEN>"
}
}
}
}
起動コマンドuvx canvas-local-mcp
設定が必要な環境変数
CANVAS_BASE_URLCanvas institution root URL (no /api/v1 suffix), e.g. https://your-institution.instructure.com
CANVAS_TOKENシークレットCanvas personal access token (Account -> Settings -> Approved Integrations -> New Access Token)

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

パッケージ
pypicanvas-local-mcp0.1.3

ツール

10

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

パラメーター型必須説明
active_onlybooleanいいえ

詳細

Canvas LMS MCP サーバー(canvas-mcp)

CI PyPI Python License

Canvas のコース、課題、締め切り、モジュール、成績について、Claude にまとめて質問できます。

canvas-mcp は、Canvas LMS ユーザー(学生、教員、MCP ビルダー)向けのローカルファーストな MCP サーバーです。Canvas REST API の操作を、Claude Code、Claude Desktop、その他の MCP 互換クライアントで使える MCP ツールに変換します。

ステータス: アルファ版です。単一ユーザー向けで、保証はなく、API の仕様は今後変更される可能性があります。問題が発生した場合は、イシューを報告してください。

対象ユーザー

  • 学生:複数のコースをまとめて確認したい方
  • 教育関係者:課題、モジュール、お知らせにすばやくアクセスしたい方
  • MCP ユーザー:ローカルの Claude ワークフローで Canvas データを使いたい方

Claude に質問できること

  • 「現在受講中のすべてのコースで、今週締め切りの課題は何ですか?」
  • 「来週の今後のイベントとプランナー項目を表示してください。」
  • 「コースごとに現在の成績を一覧表示してください。」
  • 「コース 12345 のモジュール(項目を含む)を取得してください。」
  • 「コース 12345 のお知らせを表示してください。」
  • 「コース 12345 からページ syllabus を取得してください。」

クイックスタート

前提条件:Python 3.10+。

1) Canvas の個人用アクセストークンを作成する

Canvas で、Account → Settings → Approved Integrations → + New Access Token に進みます。 表示されたトークンをコピーしてください(Canvas では後から再表示できません)。

2) インストールする

PyPI から(推奨):

pip install canvas-local-mcp

または、ソースから:

git clone https://github.com/admin978/canvas-mcp.git && cd canvas-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
3) ~/.canvas.env を設定する
curl -fsSL https://raw.githubusercontent.com/admin978/canvas-mcp/main/.canvas.env.example -o ~/.canvas.env
chmod 600 ~/.canvas.env
# edit ~/.canvas.env: set CANVAS_BASE_URL (institution root, no /api/v1)
# and paste the token into CANVAS_TOKEN

トークンの安全な取り扱いに関するガイダンス(最小権限、ファイルのアクセス許可、ローテーション/失効、脆弱性の報告)については、SECURITY.md を参照してください。

4) MCP クライアントに登録する

Claude Code:

claude mcp add canvas-local -- canvas-local-mcp

Claude Desktop:

  • macOS のパスの例:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows のパスの例:%APPDATA%\Claude\claude_desktop_config.json
  • Linux のパスの例:~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "canvas-local": {
      "command": "canvas-local-mcp"
    }
  }
}

公開されるツール

  • list_courses
  • list_assignments
  • list_modules
  • list_announcements
  • get_page
  • get_file_info
  • get_grades
  • planner_items
  • upcoming_events
  • todo

一括ダンプ

canvas-local-mcp-dump は、オフラインでのインデックス作成用に、コースファイルと関連コンテンツをダウンロードします。

canvas-local-mcp-dump              # all active courses
canvas-local-mcp-dump 12345 67890  # specific course IDs

デフォルトでは、出力先は ./canvas-dump/ です。CANVAS_DUMP_DIR=/path/to/dir で変更できます。

ローカルファースト、プライバシー、トークンのフロー

  • サーバーはローカルで動作し、MCP クライアントとの通信には stdio トランスポートを使用します。
  • 設定は ~/.canvas.env(CANVAS_BASE_URL、CANVAS_TOKEN)から読み込まれます。
  • リクエストはローカルサーバーから公式の Canvas API エンドポイントに送信されます。
  • リクエストの経路では外部のトークンブローカーを使用しません。
  • セキュリティガイダンスと脆弱性開示ポリシーについては、SECURITY.md を参照してください。

デモ

現在、デモ GIF はまだコミットされていません。次の手順でワークフローをすぐに確認できます。

次のプロンプトを試す

MCP サーバーを登録した後、Claude に質問します。

  • 「現在受講中の Canvas コースを一覧表示してください。」
  • 「現在受講中のすべてのコースで、今週締め切りの課題は何ですか?」
  • 「来週の今後のイベントとプランナー項目を表示してください。」
  • 「コースごとに現在の成績を一覧表示してください。」

プレースホルダー:今後の PR で、短いターミナル/GIF のウォークスルーを追加してください。

開発

Python 3.10+ が必要です。

pip install -e ".[dev]"
ruff check canvas_local_mcp tests   # lint
pytest                              # tests run against a mocked Canvas API — no token needed

CI では、プッシュとプルリクエストのたびに Python 3.10~3.13 でリンターとテストを実行します。

新しいリリースの公開

PyPI と MCP Registry で一貫性を保って新しいバージョン(例:0.1.4)を公開するには、次の順序に従ってください。

1. すべての箇所でバージョンを更新する

1 つの PR で、以下の 3 つのファイルすべてを新しいバージョン文字列に更新します。

ファイルフィールド
pyproject.toml[project].version
canvas_local_mcp/__init__.py__version__
server.jsonルートの version および packages[0].version

3 つのバージョンが一致していない場合、CI テスト test_server_json_version_matches_package とワークフローの検証ステップは失敗します。

2. PR を main にマージする

マージする前に、すべての CI チェックが通るまで待ちます。

3. canvas-local-mcp を PyPI に公開する

このプロジェクトでは、PyPI へのアップロードに Trusted Publisher (OIDC) を使用しています。 PyPI 公開ワークフローを実行するか(または認証情報を設定済みの場合は python -m build && twine upload dist/* を実行して)、タグを作成する前に公開します。こうすることで、MCP Registry がパッケージを取得するときに利用できる状態になります。

4. タグ vX.Y.Z を作成してプッシュする
git tag v0.1.4
git push origin v0.1.4

これにより Publish to MCP Registry ワークフローが実行され、以下が行われます。

  1. server.json、pyproject.toml、タグのすべてで同じバージョンが指定されていることを検証します。
  2. GitHub OIDC を使って server.json を MCP Registry に公開します(シークレットは不要です)。
5. 検証する
  • PyPI:https://pypi.org/project/canvas-local-mcp/
  • MCP Registry:https://registry.modelcontextprotocol.io/?q=canvas-mcp
  • GitHub Actions:https://github.com/admin978/canvas-mcp/actions

重要:既存のタグを再利用したり、移動したりしないでください。誤りがあり、再公開が必要な場合は、 次のパッチバージョン(例:0.1.4)に更新して、手順 1 からやり直してください。

コントリビューション、ロードマップ、サポート

  • イシュー/機能リクエスト
  • バグ修正や Canvas ワークフローの改善に関するプルリクエストを歓迎します
  • ロードマップの方針は、現在、オープンイシューや今後の PR で確認できます

このプロジェクトが Claude を使った Canvas の管理に役立った場合は、上記の手順を試して、⭐ を付けていただけると、ほかの学生や教育者にも見つけてもらいやすくなります。

ライセンス

MIT — LICENSE をご覧ください。


AGENTE 404 S.L. が制作 · [email protected]

コメント

MCP は初めてですか?

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

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