mcpField
C
Canvas LMS MCP Server

Canvas LMS MCP Server

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

Canvas LMS MCP Server について

Canvas LMS MCP Serverは、学生などのアカウント利用者向けに、Canvas LMSのデータをAIクライアントへ接続します。コース、課題、成績、ディスカッション、予定、ファイルなどを扱います。

主な機能

  1. 01コースとモジュールの閲覧
  2. 02課題と提出物の確認
  3. 03成績とフィードバックの取得
  4. 04お知らせとディスカッションの閲覧
  5. 05カレンダーとプランナー項目の確認
  6. 06クイズとファイルへのアクセス

活用シーン

  1. 01期限が近い課題の確認
  2. 02コースの成績と提出フィードバックの確認
  3. 03複数コースのお知らせの検索
  4. 04コースのディスカッションと予定の確認

MCP 対応

MCPツールを通じて、コース、課題、提出物、ディスカッション、カレンダーイベント、ファイルなどCanvas LMSのデータを提供します。Claude Desktop、Claude Code、Cursor、WindsurfなどのMCPクライアントに対応します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"canvas-lms": {
"command": "uvx",
"args": [
"canvas-lms-mcp"
],
"env": {
"CANVAS_API_TOKEN": "<CANVAS_API_TOKEN>",
"CANVAS_BASE_URL": "<CANVAS_BASE_URL>"
}
}
}
}
起動コマンドuvx canvas-lms-mcp
設定が必要な環境変数
CANVAS_API_TOKENシークレット
CANVAS_BASE_URL

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

パッケージ
pypicanvas-lms-mcp

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Canvas LMS MCP サーバー

smithery badge 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:ソースからインストール
  1. リポジトリをクローンします:

    git clone https://github.com/yourusername/canvas-lms-mcp.git
    cd canvas-lms-mcp
    
  2. 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(必須):コース ID
  • include(任意):追加で含めるデータのリスト
get_course_syllabus

コースのシラバス本文を HTML 形式で取得します。

パラメーター:

  • course_id(必須):コース ID
get_course_modules

コースのモジュールを取得します。

パラメーター:

  • course_id(必須):コース ID
  • include(任意):追加で含めるデータのリスト
  • per_page(任意、デフォルト=100):1 ページあたりの項目数
get_module_items

特定のモジュールの項目を取得します。

パラメーター:

  • course_id(必須):コース ID
  • module_id(必須):モジュール ID
課題
list_assignments

コースの課題を一覧表示します。

パラメーター:

  • course_id(必須):コース ID
  • bucket(必須):「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(必須):コース ID
  • assignment_id(必須):課題 ID
list_assignment_groups

コースの課題グループを一覧表示します(配点やカテゴリを確認できます)。

Parameters:

  • course_id(必須):コース ID
ページ
get_page

URL スラッグで単一のページを取得します。

Parameters:

  • course_id(必須):コース ID
  • page_slug(必須):ページの URL スラッグ(例: "syllabus", "course-handbook")
提出物
list_submissions

コースにおける現在のユーザーの提出物を、成績やフィードバックを含めて一覧表示します。

Parameters:

  • course_id(必須):コース ID
  • include(任意):追加データのリスト(例: ["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(必須):コース ID
  • page(任意、デフォルト=1):ページ番号(1 起点)
  • items_per_page(任意、デフォルト=10):1 ページあたりの項目数
get_discussion_view

すべての返信を含む、ディスカッショントピックの全体表示を取得します。

Parameters:

  • course_id(必須):コース ID
  • discussion_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(必須):コース ID
  • include(任意):含める追加データのリスト
  • page(任意、デフォルト=1):ページ番号(1 起点)
  • items_per_page(任意、デフォルト=10):1 ページあたりの項目数
get_quiz

ID で単一のクイズを取得します。

Parameters:

  • course_id(必須):コース ID
  • quiz_id(必須):クイズ ID
ファイル
list_files

コースまたはフォルダーのファイルを一覧表示します。注:機関の権限設定によっては、学生アカウントで 403 が返されることがあります。

Parameters:

  • course_id(任意):コース ID
  • folder_id(任意):フォルダー ID
  • include(任意):含める追加データのリスト
  • page(任意、デフォルト=1):ページ番号(1 起点)
  • items_per_page(任意、デフォルト=10):1 ページあたりの項目数
get_file

ID でファイルを取得します。list_files が制限されている場合でも、既知のファイル ID であれば動作します。

Parameters:

  • course_id(必須):コース ID
  • file_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 ファイルを参照してください。

コメント

MCP は初めてですか?

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

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