Skip to main content
Glama

CanvasLMS - API

CanvasLMS - API は、Canvas LMS アカウントを AI アシスタントの前に置くローカル MCP サーバーです。お使いのマシン上で動作し、ご自身の個人アクセストークンで Canvas と通信し、コース、課題、採点、ディスカッション、モジュール、ページ、ファイル、メッセージング、ピアレビュー、アクセシビリティをカバーする約 100 のツールを公開します。すべてのツールは Markdown を返します。Canvas を変更するすべてのツールは、まず変更内容のプレビューを表示し、確認後にのみ変更を適用します。

クイックスタート

  1. Canvas の個人アクセストークンを取得します。Canvas で Account > Settings > Approved Integrations > New Access Token に移動します。

  2. リポジトリをクローンしてインストールします。

    git clone https://github.com/harryx2011-boop/CanvasLMS-API.git
    cd CanvasLMS-API
    uv venv .venv
    uv pip install -e .

    uv を使用しない場合は、代わりに標準の仮想環境を使用します。

    python -m venv .venv
    .venv\Scripts\activate   # Windows
    source .venv/bin/activate # macOS/Linux
    pip install -e .
  3. サンプル環境ファイルをコピーし、Canvas のホストとトークンを入力します。

    cp .env.example .env
  4. 接続を確認します。

    canvaslms-api --test

    これにより、名前、ユーザー ID、アクティブなコースが表示されます。失敗した場合は、.env 内の CANVAS_URL と CANVAS_TOKEN を確認してください。

Related MCP server: Canvas LMS MCP Server

Claude Code に接続する

Windows:

claude mcp add --scope user canvaslms-api -- "<absolute path>\.venv\Scripts\canvaslms-api.exe"

macOS/Linux:

claude mcp add --scope user canvaslms-api -- "<absolute path>/.venv/bin/canvaslms-api"

サーバーは起動時にリポジトリフォルダから .env を読み取るため、クライアント設定に環境変数を入れる必要はありません。.venv 内の実行ファイルへの絶対パスを使用してください。

Claude Desktop に接続する

Claude Desktop の設定ファイルにエントリを追加します。

{
  "mcpServers": {
    "canvaslms-api": {
      "command": "<absolute path>\\.venv\\Scripts\\canvaslms-api.exe"
    }
  }
}

macOS/Linux では、command に <absolute path>/.venv/bin/canvaslms-api を使用します。

設定ファイルの場所:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

ファイルを編集した後、Claude Desktop を再起動します。

その他のクライアント

stdio サーバーをサポートする MCP クライアントは、上記の Claude Code や Claude Desktop と同じ方法で、実行ファイルを直接起動できます。

HTTP のみをサポートするクライアントの場合は、HTTP トランスポートでサーバーを実行します。

canvaslms-api --transport http --host 127.0.0.1 --port 7100

クライアントを http://127.0.0.1:7100 に向けます。サーバーは引き続きリポジトリフォルダ内の .env から Canvas の認証情報を読み取ります。

動作の仕組み

  • コース識別子。 任意の course 引数は、数値の Canvas ID、コースコード(ENG101)、コース名の一部、または sis_course_id:X を受け付けます。どれを使うか不明な場合は、最初に list_courses を使用してください。

  • 確認ゲート。 Canvas を変更するすべてのツールは、confirm: bool = false 引数を受け取ります。これを指定せずに呼び出すと、ツールは変更内容のプレビューを返し、Canvas を変更するリクエストは行いません。プレビューを確認した後、confirm=true を指定してもう一度呼び出します。

  • 権限。 すべてのツールはトークン所有者として実行されます。学生トークンは、他の学生のプライベートデータを表示したり、採点や一括メッセージングなどの教育者向けツールを使用したりすることはできません。そのような呼び出しは、不足している権限に関するヒントとともに Canvas の 403 を返します。

  • 出力。 すべてのツールは、チャットのトランスクリプトに直接表示するためにフォーマットされた Markdown を返します。

  • 匿名化。 CANVAS_ANONYMIZE_STUDENTS=true の場合、ツール出力の学生名は実名ではなく、コースごとに安定した仮名に置き換えられます。

ツールリファレンス

書き込みツール(confirm と表示)は、confirm=true を指定して再度呼び出されるまでプレビューを返します。

コースと ID

ツール

目的

confirm

get_profile

トークン所有者の Canvas プロフィールを取得する

get_enrollments

トークン所有者のコース横断的な登録情報を一覧表示する

list_courses

トークン所有者が閲覧できるコースを一覧表示・検索する

get_course

1 つのコースの詳細を取得する

get_syllabus

コースのシラバス本文を取得する

get_course_overview

コースを要約する: シラバス、モジュール、今後の課題

get_course_structure

コースの完全なモジュール/ページ/課題の概要を取得する

get_cache_status

キャッシュされているコース解決データを表示する

clear_cache

コース解決キャッシュをクリアする

学生

ツール

目的

confirm

get_upcoming_assignments

コース横断的に近日中に期限が来る課題を一覧表示する

get_todo

Canvas の ToDo リストを取得する

get_submission_status

コースの提出済み/未提出/採点済みのステータスを表示する

get_grades

1 つまたはすべてのコースの現在の成績を取得する

get_pending_peer_reviews

トークン所有者がまだ行っていないピアレビューを一覧表示する

get_submission

1 つの提出物の詳細とフィードバックを取得する

submit_assignment

課題を提出する

confirm

comment_on_submission

提出物にコメントを追加する

confirm

mark_module_item_done

モジュール項目を完了としてマークする

confirm

課題と採点

ツール

目的

confirm

list_assignments

コースの課題を一覧表示する

get_assignment

1 つの課題の詳細を取得する

list_submissions

課題の提出物を一覧表示する

get_assignment_analytics

課題の提出数と成績分布を要約する

get_student_analytics

コース内の 1 人の学生の活動を要約する

create_assignment

課題を作成する

confirm

update_assignment

課題を更新する

confirm

bulk_grade_submissions

1 回の呼び出しで複数の提出物を採点する

confirm

grade_with_rubric

ルーブリックに基づいて提出物を採点する

confirm

ルーブリック

ツール

目的

confirm

list_rubrics

コースのルーブリックを一覧表示する

get_rubric

1 つのルーブリックの評価基準を取得する

get_rubric_assessment

提出物のルーブリック評価を取得する

create_rubric

ルーブリックを作成する

confirm

create_rubric_from_csv

CSV 定義からルーブリックを作成する

confirm

associate_rubric

ルーブリックを課題に添付する

confirm

ディスカッションとアナウンス

ツール

目的

confirm

list_discussion_topics

コースのディスカッショントピックを一覧表示する

get_discussion_topic

1 つのディスカッショントピックを取得する

list_discussion_entries

トピック内のトップレベルのエントリを一覧表示する

get_discussion_entry

1 つのディスカッションエントリを取得する

get_discussion_thread

返信を含む完全なスレッドを取得する

post_discussion_entry

トピックに新しいエントリを投稿する

confirm

reply_to_discussion_entry

既存のエントリに返信する

confirm

create_discussion_topic

ディスカッショントピックを作成する

confirm

update_discussion_topic

ディスカッショントピックを更新する

confirm

list_announcements

コースのアナウンスを一覧表示する

create_announcement

アナウンスを作成する

confirm

delete_announcement

1 つのアナウンスを削除する

confirm

delete_announcements

ID で複数のアナウンスを削除する

confirm

delete_announcements_matching

フィルタに一致するアナウンスを削除する

confirm

モジュール

ツール

目的

confirm

list_modules

コースのモジュールを一覧表示する

list_module_items

モジュール内の項目を一覧表示する

create_module

モジュールを作成する

confirm

update_module

モジュールを更新する

confirm

delete_module

モジュールを削除する

confirm

add_module_item

モジュールに項目を追加する

confirm

update_module_item

モジュール項目を更新する

confirm

delete_module_item

モジュール項目を削除する

confirm

ページ

ツール

目的

confirm

list_pages

コースのページを一覧表示する

get_page

1 つのページのメタデータを取得する

get_page_content

1 つのページの本文を取得する

get_front_page

コースのフロントページを取得する

create_page

ページを作成する

confirm

edit_page_content

ページの本文を置き換える

confirm

update_page_settings

ページの設定(タイトル、公開状態、編集権限)を更新する

confirm

bulk_update_pages

複数のページに同じ編集を適用する

confirm

delete_page

ページを削除する

confirm

ファイル

ツール

目的

confirm

list_files

コースのファイルを一覧表示する

read_file

テキストファイルの内容を読み取る

download_file

ファイルをディスクにダウンロードする

upload_file

コースにファイルをアップロードする

confirm

メッセージング

ツール

目的

confirm

list_conversations

Canvas Inbox の会話を一覧表示する

get_conversation

1 つの会話のメッセージを取得する

get_unread_count

未読メッセージ数を取得する

mark_conversations_read

会話を既読としてマークする

confirm

send_conversation

新しいメッセージを送信する

confirm

send_bulk_messages

同じメッセージを複数の受信者に送信する

confirm

ピアレビュー

ツール

目的

確認

list_peer_reviews

課題のピアレビュー割り当てを一覧表示する

assign_peer_review

ピアレビューを割り当てる

confirm

get_peer_review_assignments

誰が誰をレビューしているかを一覧表示する

get_peer_review_completion_analytics

ピアレビューの完了率を要約する

get_peer_review_followup_list

まだピアレビューを提出していない学生を一覧表示する

get_peer_review_comments

ピアレビューに残されたコメントを取得する

analyze_peer_review_quality

ピアレビューのフィードバックを深さと有用性で評価する

identify_problematic_peer_reviews

低品質または未提出のピアレビューをフラグ付けする

generate_peer_review_report

ピアレビュー活動の要約レポートを作成する

generate_peer_review_feedback_report

ピアレビュー全体のフィードバック内容のレポートを作成する

extract_peer_review_dataset

分析用にピアレビューデータをエクスポートする

message_peer_reviewers

学生にピアレビュー割り当てについてメッセージを送る

confirm

send_peer_review_followups

未完了のピアレビューがある学生にリマインダーを送る

confirm

人とプライバシー

ツール

目的

確認

list_users

コースに登録されているユーザーを一覧表示する

list_groups

コースのグループを一覧表示する

check_enrollment

コースにおける1人のユーザーの登録状況を確認する

export_anonymization_map

仮名と実名の対応関係をエクスポートする

confirm

get_privacy_status

匿名化が有効かどうかを表示する

アクセシビリティ

ツール

目的

確認

scan_course_content_accessibility

コースのページとファイルをアクセシビリティの問題についてスキャンする

fix_accessibility_issues

検出されたアクセシビリティの問題に修正を適用する

confirm

fetch_ufixit_report

既存のUFIXITアクセシビリティレポートを取得する

parse_ufixit_violations

UFIXITレポートから違反を解析する

format_accessibility_summary

アクセシビリティスキャンを読みやすい要約に整形する

コースコピー

ツール

目的

確認

create_content_migration

コースコンテンツの移行/コピーを開始する

confirm

get_content_migration_status

コンテンツ移行の進捗を確認する

メタ

ツール

目的

確認

search_tools

利用可能なツールをキーワードで検索する

設定

すべての設定は環境変数から取得され、リポジトリルートの.envファイルから読み込まれます。

変数

必須

デフォルト

目的

CANVAS_URL

はい

Canvasホスト。例: https://yourschool.instructure.com。/api/v1接尾辞は付けません。

CANVAS_TOKEN

はい

Canvasの個人アクセストークン。

CANVAS_TIMEOUT

いいえ

30

HTTPリクエストのタイムアウト(秒)。

CANVAS_CACHE_TTL

いいえ

300

コース解決結果がキャッシュされる時間(秒)。

CANVAS_MAX_CONCURRENCY

いいえ

5

Canvasへの最大同時リクエスト数。

CANVAS_ANONYMIZE_STUDENTS

いいえ

false

ツール出力で学生名を安定した仮名に置き換えます。

CANVAS_DOWNLOAD_DIR

いいえ

システム一時ディレクトリ

download_fileがダウンロードしたファイルを書き込む場所。

canvaslms-api --configを実行すると、トークンをマスクした状態で解決済みの設定が表示されます。

開発

開発用エクストラをインストール:

uv pip install -e ".[dev]"

テストを実行:

pytest

Lint:

ruff check .

CIはプッシュのたびにテストとLintを実行します。Dockerイメージも利用可能で、そのエントリポイントはcanvaslms-apiです。

開発中に役立つCLIフラグ: canvaslms-api --list-toolsは登録済みのすべてのツール名を表示し、canvaslms-api --configは解決済みの設定を表示し、canvaslms-api --versionはインストール済みのバージョンを表示します。

セキュリティに関する注意事項

  • Canvasトークンはローカルに保持されます。起動時に.envから読み込まれ、設定したCanvas APIの呼び出しにのみ使用されます。

  • トークンがログに記録されることはありません。--configとget_privacy_statusはトークンをマスクします。

  • 書き込みツールはプレビューの後に明示的なconfirm=trueが必要です。Canvasで誤って変更が発生することはありません。

  • download_fileは宛先パスに既存のファイルがある場合、上書きしません。

ライセンス

MIT。LICENSEを参照してください。

Related MCP Connectors

Related MCP Servers