Canvas LMS MCP Server について
Canvas LMS MCP Serverは、学生などのアカウント利用者向けに、Canvas LMSのデータをAIクライアントへ接続します。コース、課題、成績、ディスカッション、予定、ファイルなどを扱います。
主な機能
- 01コースとモジュールの閲覧
- 02課題と提出物の確認
- 03成績とフィードバックの取得
- 04お知らせとディスカッションの閲覧
- 05カレンダーとプランナー項目の確認
- 06クイズとファイルへのアクセス
活用シーン
- 01期限が近い課題の確認
- 02コースの成績と提出フィードバックの確認
- 03複数コースのお知らせの検索
- 04コースのディスカッションと予定の確認
MCP 対応
MCPツールを通じて、コース、課題、提出物、ディスカッション、カレンダーイベント、ファイルなどCanvas LMSのデータを提供します。Claude Desktop、Claude Code、Cursor、WindsurfなどのMCPクライアントに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Canvas LMS MCP サーバー
Canvas LMS のインスタンスを通じて教育データに簡単にアクセスできる、最小構成の Canvas LMS MCP(Machine Conversation Protocol)サーバーです。このサーバーは、AI システム(Cursor など)と Canvas Learning Management System の橋渡しをします。
機能
- コース:登録済みコースの一覧表示、コースの詳細、シラバス、モジュール、モジュール項目の取得
- 課題:課題の一覧表示と取得(提出状況の指定は任意)
- ページ:URL スラッグを指定してコースのページを取得
- 提出物:成績とフィードバック付きで自分の提出物を一覧表示
- お知らせ:複数コースのお知らせを一覧表示
- ディスカッション:トピックの一覧表示とディスカッションスレッド全体の閲覧
- カレンダー:日付で絞り込んでカレンダーイベントを一覧表示
- プランナー:プランナー項目(課題、お知らせなど)を一覧表示
- 登録:成績付きで登録データを取得
- クイズ:クイズの一覧表示と取得(クラシッククイズのみ)
- ファイル:ファイルの一覧表示と取得
- ナビゲーション:コースのタブ、課題グループ、お気に入りのコースを取得
インストール
Smithery 経由でのインストール
Smithery 経由で Claude Desktop 用の Canvas LMS Server を自動的にインストールするには:
npx -y @smithery/cli install @ahnopologetic/canvas-lms-mcp --client claude
前提条件
- Python 3.13+
- Canvas LMS API トークン
uvパッケージマネージャー(推奨)
インストール方法
オプション 1:uvx でインストール(推奨)
canvas-lms-mcp をインストールして実行する最も簡単な方法は、uvx を使用することです。
uvx canvas-lms-mcp
これにより、サーバーを永続的にインストールせず、分離された環境で実行できます。
ツールを永続的にインストールするには:
uv tool install canvas-lms-mcp
オプション 2:ソースからインストール
-
リポジトリをクローンします:
git clone https://github.com/yourusername/canvas-lms-mcp.git cd canvas-lms-mcp -
uv でインストールします:
# Install uv if you don't have it yet curl -LsSf https://astral.sh/uv/install.sh | sh # Create a virtual environment and install dependencies uv venv uv pip install -e .または、従来の方法を使用します:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -e .
設定
次の環境変数を設定します:
export CANVAS_API_TOKEN="your_canvas_api_token"
export CANVAS_BASE_URL="https://your-institution.instructure.com" # Default: https://canvas.instructure.com
Canvas API トークンは、Canvas アカウントの設定から取得できます。
サーバーの実行
uv でサーバーを起動します:
uv run src/canvas_lms_mcp/main.py
uvx ツールでインストールした場合:
canvas-lms-mcp
デフォルトでは、サーバーは http://localhost:8000 で実行されます。http://localhost:8000/docs の FastMCP インターフェースを使用して API を操作できます。
利用可能なツール
このサーバーは、Canvas LMS と連携するための 22 個のツールを提供します。
コース
list_courses
ユーザーが現在登録しているコースを一覧表示します。
パラメーター:
page(任意、デフォルト=1):ページ番号(1 から始まります)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
get_course
ID を指定して単一のコースを取得します。
パラメーター:
course_id(必須):コース IDinclude(任意):追加で含めるデータのリスト
get_course_syllabus
コースのシラバス本文を HTML 形式で取得します。
パラメーター:
course_id(必須):コース ID
get_course_modules
コースのモジュールを取得します。
パラメーター:
course_id(必須):コース IDinclude(任意):追加で含めるデータのリストper_page(任意、デフォルト=100):1 ページあたりの項目数
get_module_items
特定のモジュールの項目を取得します。
パラメーター:
course_id(必須):コース IDmodule_id(必須):モジュール ID
課題
list_assignments
コースの課題を一覧表示します。
パラメーター:
course_id(必須):コース IDbucket(必須):「past」、「overdue」、「undated」、「ungraded」、「unsubmitted」、「upcoming」、または「future」で絞り込みますorder_by(必須):「due_at」、「position」、または「name」で並べ替えますinclude(任意):追加で含めるデータのリスト(例:成績の状況を確認するには["submission"])page(任意、デフォルト=1):ページ番号(1 から始まります)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
get_assignment
ID を指定して単一の課題を取得します。
パラメーター:
course_id(必須):コース IDassignment_id(必須):課題 ID
list_assignment_groups
コースの課題グループを一覧表示します(配点やカテゴリを確認できます)。
Parameters:
course_id(必須):コース ID
ページ
get_page
URL スラッグで単一のページを取得します。
Parameters:
course_id(必須):コース IDpage_slug(必須):ページの URL スラッグ(例: "syllabus", "course-handbook")
提出物
list_submissions
コースにおける現在のユーザーの提出物を、成績やフィードバックを含めて一覧表示します。
Parameters:
course_id(必須):コース IDinclude(任意):追加データのリスト(例:["assignment", "submission_comments"])page(任意、デフォルト=1):ページ番号(1 起点)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
お知らせ
list_announcements
1 つ以上のコースのお知らせを一覧表示します。
Parameters:
course_ids(必須):コース ID のリストpage(任意、デフォルト=1):ページ番号(1 起点)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
ディスカッション
list_discussions
コースのディスカッショントピックを一覧表示します。
Parameters:
course_id(必須):コース IDpage(任意、デフォルト=1):ページ番号(1 起点)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
get_discussion_view
すべての返信を含む、ディスカッショントピックの全体表示を取得します。
Parameters:
course_id(必須):コース IDdiscussion_id(必須):ディスカッショントピック ID
カレンダー
list_calendar_events
コースのカレンダーイベントを一覧表示します。
Parameters:
context_codes(必須):コンテキストコードのリスト(例:["course_123"])start_date(任意):ISO 8601 形式の開始日end_date(任意):ISO 8601 形式の終了日page(任意、デフォルト=1):ページ番号(1 起点)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
プランナー項目
list_planner_items
認証済みユーザーのプランナー項目を一覧表示します。
Parameters:
start_date(必須):ISO 8601 形式の開始日end_date(必須):ISO 8601 形式の終了日context_codes(任意):コンテキストコードのリスト(例:["course_123"])page(任意、デフォルト=1):ページ番号(1 起点)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
履修登録
get_enrollments
成績を含む、現在のユーザーの履修登録情報を取得します。
クイズ
list_quizzes
コースのクイズを一覧表示します。注:New Quizzes(quiz_lti)ではなく、Classic Quizzes のみで動作します。
Parameters:
course_id(必須):コース IDinclude(任意):含める追加データのリストpage(任意、デフォルト=1):ページ番号(1 起点)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
get_quiz
ID で単一のクイズを取得します。
Parameters:
course_id(必須):コース IDquiz_id(必須):クイズ ID
ファイル
list_files
コースまたはフォルダーのファイルを一覧表示します。注:機関の権限設定によっては、学生アカウントで 403 が返されることがあります。
Parameters:
course_id(任意):コース IDfolder_id(任意):フォルダー IDinclude(任意):含める追加データのリストpage(任意、デフォルト=1):ページ番号(1 起点)items_per_page(任意、デフォルト=10):1 ページあたりの項目数
get_file
ID でファイルを取得します。list_files が制限されている場合でも、既知のファイル ID であれば動作します。
Parameters:
course_id(必須):コース IDfile_id(必須):ファイル ID
その他
get_tabs
コースで利用可能なタブ/ナビゲーション項目を取得します。
Parameters:
course_id(必須):コース ID
list_favorites
現在のユーザーのお気に入りコースを一覧表示します。
統合
この MCP サーバーは、Model Context Protocol に対応するあらゆるクライアントで動作します。Claude Desktop、Claude Code、Cursor、Windsurf などに対応しています。
MCP の設定はすべてのクライアントで共通です。異なるのは設定ファイルの場所だけです。
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}
your_canvas_api_token を Canvas API トークン(Canvas → Account → Settings → New Access Token で取得)に置き換え、your-institution.instructure.com を所属機関の Canvas URL に置き換えてください。
Claude Desktop
Claude Desktop の設定ファイルに追加します。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
保存後、Claude Desktop を再起動してください。
Claude Code
プロジェクトの .mcp.json またはグローバルの ~/.claude/settings.json に追加します。
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}
Cursor
プロジェクトディレクトリの .cursor/mcp.json に追加します。保存後、Cursor を再起動してください。
Windsurf
~/.codeium/windsurf/mcp_config.json に追加します。保存後、Windsurf を再起動してください。
使用例
接続したら、Canvas のデータについて AI アシスタントに質問できます。
- 「来週が締め切りの課題は何ですか?」
- 「生物学のコースのシラバスを見せてください」
- 「今日、どのようなお知らせが投稿されましたか?」
- 「これまでの成績はどうなっていますか?」
- 「明日の予定を教えてください」
- 「英語のクラスのディスカッション投稿を見せてください」
開発
詳しい開発手順については、DEVELOPMENT.md ファイルを参照してください。
ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細については、LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。