CanvasLMS-API
CanvasLMS - API
CanvasLMS - API は、Canvas LMS アカウントを AI アシスタントの前に置くローカル MCP サーバーです。お使いのマシン上で動作し、ご自身の個人アクセストークンで Canvas と通信し、コース、課題、採点、ディスカッション、モジュール、ページ、ファイル、メッセージング、ピアレビュー、アクセシビリティをカバーする約 100 のツールを公開します。すべてのツールは Markdown を返します。Canvas を変更するすべてのツールは、まず変更内容のプレビューを表示し、確認後にのみ変更を適用します。
クイックスタート
Canvas の個人アクセストークンを取得します。Canvas で Account > Settings > Approved Integrations > New Access Token に移動します。
リポジトリをクローンしてインストールします。
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 .サンプル環境ファイルをコピーし、Canvas のホストとトークンを入力します。
cp .env.example .env接続を確認します。
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.jsonmacOS:
~/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ホスト。例: | |
| はい | Canvasの個人アクセストークン。 | |
| いいえ |
| HTTPリクエストのタイムアウト(秒)。 |
| いいえ |
| コース解決結果がキャッシュされる時間(秒)。 |
| いいえ |
| Canvasへの最大同時リクエスト数。 |
| いいえ |
| ツール出力で学生名を安定した仮名に置き換えます。 |
| いいえ | システム一時ディレクトリ |
|
canvaslms-api --configを実行すると、トークンをマスクした状態で解決済みの設定が表示されます。
開発
開発用エクストラをインストール:
uv pip install -e ".[dev]"テストを実行:
pytestLint:
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を参照してください。
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseCqualityCmaintenanceLocal-first MCP server for Canvas LMS. Stdio transport, no third-party broker, token stays in ~/.canvas.env. Exposes courses, assignments, modules, announcements, grades, planner items, upcoming events, todo list, and bulk file dump as MCP tools.1038 PyPI4MIT
- AlicenseBqualityAmaintenanceMCP server for Canvas LMS, providing 115+ tools to read courses, assignments, submissions, rubrics, quizzes; grade, comment, manage course content, and handle Canvas admin workflows from any AI agent.1821,354 npm10MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.4 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS that exposes courses, assignments, modules, pages, files, grades, and submissions as tools for AI agents.-