Skip to main content
Glama

Codex Canvas MCP

互換性のあるクライアントがCanvasを読み取り、複数の独立した安全チェックを経た後にのみ一般的なコースコンテンツを作成できる、ポータブルなローカルMCPサーバーです。

安全モデル

  • Canvasの読み取りは、ローカル認証情報の設定後、デフォルトで利用可能です。

  • 書き込みはデフォルトで無効です。

  • すべてのコンテンツ書き込みには、有効なローカルポリシー、コースごとの正確な許可リスト一致、正確な確認テキスト、およびMCPクライアントでの承認が必要です。

  • 画像アップロードにはペイロードゲートが追加されます。設定された信頼済みフォルダ内にあるローカル所有のPNG、JPEG、またはWebPのみ、10 MiB以下で送信できます。

  • 汎用的なCanvas書き込みツールはありません。

  • 認証情報は1Password、およびオプションでmacOSキーチェーンに保持されます。このリポジトリやクライアント設定には含めないでください。

すべてのコンテンツツールは、互換性のあるクライアントが承認を要求できるように、変更および破壊的としてマークされています。ローカルサーバーはまた、要求されたアクションと正確な確認が一致しない限り呼び出しを拒否します。例: APPROVE CANVAS MODULE WRITE course <course_id>

ルーブリック作成は、同一オリジンのCanvas課題URL、課題モジュール項目URL、またはassignment_idクエリパラメータを含むコースURLを受け入れます。コースと課題が解決された後、クエリ文字列とフラグメントは無視されます。URLがコースポリシーをバイパスすることはありません。そのコースIDは明示的に許可リストに登録されている必要があり、ルーブリック作成にはAPPROVE CANVAS RUBRIC WRITE course <course_id>が必要です。このツールは既存の課題ルーブリックの置き換えを拒否し、すべての基準と評価に説明を要求し、採点ルーブリックのポイントが課題のポイントと一致することを要求します。

Related MCP server: CoursePack Local MCP Server

含まれるもの

ツール

機能

デフォルト

canvas_get_current_user

認証済みプロファイルを読み取る

利用可能

canvas_list_modules

1つのコースのモジュールと項目を読み取る

利用可能

canvas_read_api

正規化されたCanvas API v1パスをGETする

利用可能

canvas_get_write_policy

ローカルポリシーの状態を検査する

利用可能

canvas_upload_image

設定された信頼済みフォルダから検証済み画像を1つアップロードする

ブロック済み

canvas_write_page

1つのページを作成または更新する

ブロック済み

canvas_create_module

1つのモジュールを作成する

ブロック済み

canvas_create_module_item

モジュールに1つのコンテンツ項目を配置する

ブロック済み

canvas_create_assignment

1つの課題を作成する

ブロック済み

canvas_create_assignment_rubric

Canvas URLから1つの課題ルーブリックを作成して添付する

ブロック済み

canvas_create_discussion

1つのディスカッションを作成する

ブロック済み

canvas_create_classic_quiz

1つのクラシッククイズを作成する

ブロック済み

canvas_create_classic_quiz_question

クラシッククイズに1つの質問を追加する

ブロック済み

canvas_delete_page

1つのページを削除する

ブロック済み

canvas_delete_assignment

1つの課題を削除する

ブロック済み

canvas_delete_discussion

1つのディスカッションを削除する

ブロック済み

canvas_delete_classic_quiz

1つのクラシッククイズを削除する

ブロック済み

canvas_delete_module

1つのモジュールとその項目配置を削除する

ブロック済み

新しいMacのセットアップ

前提条件: Python 3.11以降、1Password CLI、意図したCanvas認証情報項目のみを読み取れる1Passwordサービスアカウント、および作業に実用的な最小限の権限を持つCanvas APIトークン。

  1. クローンして分離された環境にインストールします:

    git clone https://github.com/mrchris-ai/codex_canvas_mcp.git
    cd codex_canvas_mcp
    python3 -m venv .venv
    . .venv/bin/activate
    python -m pip install --upgrade pip
    python -m pip install -e .
  2. 隠しフィールドにCanvas APIトークンを含む1Password項目を作成します。サービスアカウントに、含まれるボールト/項目への読み取りアクセスのみを付与します。ボールト名、項目名またはID、隠しフィールドのラベルを記録します。それらの値をこのリポジトリに置かないでください。

  3. サービスアカウントトークンの配信方法を1つ選択します:

    • 短命のシェルセッションの場合、ローカルのシークレットランチャーを通じてMCPサーバープロセスにOP_SERVICE_ACCOUNT_TOKENを提供します。

    • macOSでは、そのトークンをキーチェーンに保存し、非秘密の検索ラベルを設定します。コマンド例(安全にプロンプトが表示されます。トークンをコマンドラインに置かないでください):

      security add-generic-password -U -s "your-service-label" -a "your-account-label" -w
  4. サーバープロセスをこれらの非秘密の値で設定します:

    変数

    目的

    CANVAS_BASE_URL

    Canvas HTTPSオリジン。例: https://school.instructure.com

    CANVAS_OP_VAULT

    1Passwordボールト名またはID

    CANVAS_OP_ITEM

    Canvas認証情報項目名またはID

    CANVAS_OP_FIELD

    隠しトークンフィールドのラベル。デフォルトはcredential

    CANVAS_KEYCHAIN_SERVICE

    OP_SERVICE_ACCOUNT_TOKENを使用しない場合のmacOSキーチェーンサービスラベル

    CANVAS_KEYCHAIN_ACCOUNT

    OP_SERVICE_ACCOUNT_TOKENを使用しない場合のmacOSキーチェーンアカウントラベル

    CANVAS_IMAGE_UPLOAD_ROOT

    画像アップロードが許可される唯一のローカルフォルダへの絶対パス

  5. Canvasに接続したり認証情報を読み取ったりせずに、プロトコルとセキュリティゲートのみをテストします:

    python -m unittest discover -s tests -v
    printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | python -m canvas_mcp
  6. stdioサーバーをCodexに追加します。プロジェクトレベルの形式は次のとおりです:

    [mcp_servers.canvas]
    command = "/absolute/path/to/codex_canvas_mcp/.venv/bin/python"
    args = ["-m", "canvas_mcp"]
    
    [mcp_servers.canvas.env]
    CANVAS_BASE_URL = "https://school.instructure.com"
    CANVAS_OP_VAULT = "your-vault"
    CANVAS_OP_ITEM = "your-item"
    CANVAS_OP_FIELD = "credential"
    CANVAS_KEYCHAIN_SERVICE = "your-service-label"
    CANVAS_KEYCHAIN_ACCOUNT = "your-account-label"
    CANVAS_IMAGE_UPLOAD_ROOT = "/absolute/path/to/reviewed/canvas-images"

    これを信頼済みプロジェクトの.codex/config.tomlまたは個人のCodex設定に配置します。シークレット値を追加しないでください。MCP設定を変更した後、再起動するか新しいタスクを開き、Canvasデータを要求する前にリストされたツールを確認します。

ChatGPT互換性

このリポジトリは、Codexおよびローカルstdio MCPをサポートする他のクライアント向けのローカルstdio MCPサーバーを実装しています。現在のChatGPTカスタムアプリは、ローカルstdioサーバーに直接接続しません。OpenAIの現在のガイダンスは、Secure MCP Tunnelを通じてプライベートなローカルMCPを公開するか(またはレビュー済みのリモートMCPエンドポイントをデプロイする)ことです。プランとワークスペース管理者の可用性に応じて異なります。このプロセスをパブリックインターネットに直接公開しないでください。

ChatGPTのセットアップを試みる前に、ChatGPTの開発者モードとMCPアプリを参照してください。可用性と承認の動作は変更される可能性があります。

コンテンツ作成ツールの有効化

特定のタスクで必要でない限り、書き込みをオフにしておいてください。

  1. config/write-policy.example.jsonをリポジトリ外の場所にコピーします。

  2. コンテンツ作成が承認された正確なCanvasコースIDのみを追加します。

  3. enabledtrueに設定し、ファイルを制限します:

    chmod 600 /absolute/private/path/write-policy.json
  4. MCPサーバー環境にCANVAS_WRITE_POLICY=/absolute/private/path/write-policy.jsonを追加します。

  5. クライアントを再起動し、canvas_get_write_policyを呼び出して有効なポリシーを確認します。

  6. 各コンテンツ書き込みについて、正確なターゲットとペイロードを確認します。アクション固有の確認フレーズを提供し、クライアントで変更アクションを承認します。

  7. タスクが完了したら、ポリシーを再度無効にします。

変数が存在しない、ファイルが存在しない、権限が0600より広い、書き込みが無効、またはコースが許可リストにない場合、サーバーは書き込みを拒否します。

画像アップロードの有効化

画像アップロードは、同じローカル書き込みポリシーと正確なコース許可リストに加えて、CANVAS_IMAGE_UPLOAD_ROOTを使用します。このツールは、相対パス、シンボリックリンク、そのルート外のファイル、現在のユーザーが所有していないファイル、サポートされていない画像タイプ、拡張子とバイナリ署名が一致しないファイル、および10 MiBを超えるファイルを拒否します。正確な確認はAPPROVE CANVAS IMAGE UPLOAD course <course_id>です。

Canvasは文書化された3段階のアップロード交換を使用します: 認証済みAPIを通じてコースファイルを初期化し、Canvasアクセストークンなしで画像をCanvasの返されたHTTPSストレージURLに送信し、返された同一オリジンのCanvas完了場所を認証します。その後、ツールは/api/v1/courses/<course_id>/files/<file_id>を読み取り、MIMEタイプとサイズをチェックしてから、永続的なコースプレビューパスを返します。ストレージ署名やファイルダウンロード検証URLを返すことはありません。

現在の作成境界

このプロジェクトは、このMac上のサポートされているチャットで使用される共有ローカルCanvas MCPのソースオブジェクトトゥルースです。通常のポリシーと承認ゲートを通過した後、Pages、Modulesとモジュール項目、Assignmentsと課題ルーブリック、Discussions、および質問付きのClassic Quizzesを作成できます。また、Pages、Assignments、Discussions、Classic Quizzes、Modules用のリソース固有の削除ツールも提供します。Moduleを削除すると、その項目配置は削除されますが、基になるコースコンテンツは削除されません。その唯一のローカルファイル機能は、上記のペイロードゲート付き画像アップローダーです。汎用ファイルアップロード、New Quizzes、およびアカウント/コース管理は引き続きサポートされていません。

実装とエンドツーエンドの検証記録については、docs/2026-08-06-content-authoring-extension.mdを参照してください。 画像アップロードの脅威モデルと検証記録については、docs/2026-08-16-image-upload-extension.mdを参照してください。

開発

python -m pip install -e .
python -m unittest discover -s tests -v
python -m compileall -q src tests

テストはネットワークと認証情報の境界をモックします。貢献者が維持しなければならない不変条件についてはAGENTS.mdを、意図的に延期された管理機能についてはROADMAP.mdを参照してください。

F
license - not found
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for the Inistate platform: module discovery, entry management, and activity submission.

  • A MCP server built for developers enabling Git based project management with project and personal…

  • An MCP server for deep research or task groups

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrchris-ai/codex_canvas_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server