Course Drift Oracle について
Course Drift Oracleは、Microsoftのai-agents-for-beginnersコースをスキャンし、廃止予定モデルの指定やパッケージのバージョン差異を検出します。署名付きの概要と詳細レポートを提供し、無料の検証機能とGitHub Actionも備えています。
主な機能
- 01廃止予定モデルの指定を検出
- 02パッケージのバージョン差異を検出
- 03レポートとレシートに署名
- 04署名とレポート内容を検証
- 05GitHub Actionsで実行
活用シーン
- 01レッスン更新前に依存関係を確認
- 02CIでモデル状態とパッケージ版を確認
- 03支払い前後にレポートを検証
MCP 対応
MCPサーバーはstreamable HTTPで、ドリフト概要・レポート、レシート検証、モデル状態検索、サイト監査を提供します。詳細レポートや一部の一括検索・監査ツールは有料です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://signetworks.atelieri.workers.dev/mcpclaude mcp add --transport http 710git-course-drift-oracle https://signetworks.atelieri.workers.dev/mcp{"mcpServers":{"710git-course-drift-oracle":{"type":"http","url":"https://signetworks.atelieri.workers.dev/mcp"}}}Cursor で開く{"servers":{"710git-course-drift-oracle":{"type":"http","url":"https://signetworks.atelieri.workers.dev/mcp"}}}VS Code で開く{"mcpServers":{"710git-course-drift-oracle":{"type":"http","url":"https://signetworks.atelieri.workers.dev/mcp"}}}{"mcpServers":{"710git-course-drift-oracle":{"serverUrl":"https://signetworks.atelieri.workers.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
10このツールにパラメーターはありません。
詳細
Course Drift Oracle
Microsoft の ai-agents-for-beginners コース向けの、署名付きドリフトレポートです。このコースをスキャンし、気づかないうちに問題になる次の 2 点を検出します。
- 非推奨、または廃止予定のデプロイを指定している モデルのピン留め
- オープンな
>=要件が、コースの執筆時に想定されていたものより新しいメジャーバージョンを解決するようになった パッケージのバージョン下限
どちらも差分には現れません。コースのリポジトリには、ピン留めされたモデルの提供がまもなく終了することも、今日 pip install を実行すると、レッスンの前提より 2 メジャーバージョン先のパッケージが取得されることも示されません。この問題に答えるには、各ピン留めをプラットフォーム独自の廃止スケジュールや、パッケージの実際のリリース履歴と照らし合わせて確認する必要があります。このリポジトリはその確認を継続的に行い、結果を署名付きレポートとして提供します。
なぜ信頼できるのか
すべてのレポートは、単に主張するのではなく署名されています。
- RFC 8785 の正規化 JSON に対する Ed25519 署名。 署名対象となった正確なバイト列を、誰でも任意の言語で再構築し、ハッシュを再計算できます。Python で署名したレシートを、相互に信頼関係のない TypeScript の検証ツールで検証できます。署名側は
oracle/receipt.py、検証側はworker/src/logic.tsを参照してください。 - 追記専用の公開チェーン。 これまでに公開されたすべてのレポートは
oracle/chain.jsonl内で連結され、各エントリは直前のエントリのハッシュを指しています。エントリを削除、編集、または並べ替えると、それ以降のリンクはすべて一致しなくなります。oracle/verify_chain.pyは、チェーンを書き込むコードとは独立してこれを検証します。 verify_reportは無料です。 支払いの前に呼び出して、無料サマリーの主張が実際の署名に裏付けられていることを確認できます。支払いの後には、購入したレポートが無料サマリーですでにコミットされたハッシュと一致することを確認できます。約束した件数より少ない指摘を提供する販売者は、信頼ではなく計算によって見つかります。- このリポジトリがソースです。 ここにあるのは製品の説明ではありません。実際のスキャナー、署名コード、サーバーが、ライブサービスの実行時と同じ形で含まれています。
5 分で使う
このサービスは、ストリーム可能な HTTP を使用する MCP サーバーです。
https://signetworks.atelieri.workers.dev/mcp
クライアントライブラリ不要の、プレーンな curl を使ったコピー&ペースト用クイックスタートです(以下の各コマンドは、記録する前に本番環境で実行済みです)。
# 1. Initialize and capture the session id from the response headers.
SESSION_ID=$(curl -si -X POST https://signetworks.atelieri.workers.dev/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"quickstart","version":"1.0"}}}' \
| tr -d '\r' | awk 'tolower($1)=="mcp-session-id:"{print $2}')
# 2. Complete the handshake.
curl -s -X POST https://signetworks.atelieri.workers.dev/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
# 3. Call a free tool. Responses are SSE frames; strip the data: prefix.
curl -s -X POST https://signetworks.atelieri.workers.dev/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"drift_summary","arguments":{}}}' \
| grep '^data:' | sed 's/^data: //'
同じパターンですべてのツールを上の表のように呼び出せます。変更するのは name と arguments だけです。
10 個のツール:
| ツール | 価格 | 戻り値 |
|---|---|---|
drift_summary | 無料 | 重大度とレッスン別の検出数、および署名付きレシート |
verify_report | 無料 | レシートの署名と、任意で検出結果の配列がレシートと一致するかを検証 |
drift_report | $0.25 | すべての検出結果:ファイル、行、診断、修正方法。MPP(Tempo テストネット)で支払い |
drift_report_x402 | $0.25 | 同じレポート。x402/USDC(Base Sepolia テストネット)で支払い |
model_status | 無料 | モデル ID を 1 つ入力すると、署名付きカタログエントリを返します。現在、有効期限切れ、廃止済み、または正直な「不明:カタログにありません」 |
model_status_batch | $0.10 | モデル ID のリストを入力すると、ID ごとのエントリと any_action_needed ゲートのブール値を返します。MPP(Tempo テストネット)で支払い |
model_status_batch_x402 | $0.10 | 同じ一括検索。x402/USDC(Base Sepolia テストネット)で支払い |
site_audit_summary | 無料 | 公開サイトのエージェント対応度スコア(12 項目のチェック):件数、対象、日付のみ。各チェックの詳細と署名付きレシートは有料プランです |
site_audit | $0.25 | 12 項目すべてのチェックについて、各チェックのステータス、詳細、修正リストを含む署名付き日付入りレシート。MPP(Tempo テストネット)で支払い |
site_audit_x402 | $0.25 | 同じ完全な監査。x402/USDC(Base Sepolia テストネット)で支払い |
スコアの意味を支払い前に把握できるよう、12 項目の監査チェックを示します:
robots-exists、robots-ai-directives、robots-not-blanket、
llmstxt-exists、llmstxt-shape、llmstxt-links、mcp-advert、
structured-data、title-meta、charset、content-type-sanity、
homepage-response。スコアに反映されるのは 10 項目です。homepage-response と
robots-not-blanket は仕様上、情報提供のみを目的とした項目であり、
サイトの評価を上げることも下げることもありません。そのため、問題のないサイトのスコアは
12 点満点中 12 点ではなく、10 点満点中 10 点です。
一般的な実行手順:
drift_summaryを呼び出します。無料で、検出結果の件数、重大度、影響を受けるレッスンを記載した署名付きレシートが返されます。それを見て、完全なレポートを購入する価値があるか判断してください。- 手順 1 のレシートを指定して
verify_reportを呼び出します。料金を支払う前に署名が有効であることを確認してください。 - $0.25 を支払い、
drift_report(USDC で支払う場合はdrift_report_x402)を呼び出します。すべての検出結果について、ファイル、行番号、問題の内容、修正方法が返されます。 - 今度は受け取った検出結果の配列を、同じレシートとともに渡して
verify_reportをもう一度呼び出します。ハッシュが一致することを確認してください。これにより、内容を削られた版ではなく、支払ったすべての情報を受け取ったことを証明できます。
GitHub Action として使う
コースのリポジトリの CI に、スキャナーを 1 行で追加します:
- uses: 710git/course-drift-oracle@v1
追加設定は以上です。以下の各入力にはデフォルト値があります。
入力
| 入力 | デフォルト | 説明 |
|---|---|---|
path | . | スキャンする、チェックアウトを基準とした相対ディレクトリ |
exclude | "" | スキャナーに組み込まれた除外対象に加えて、スキップするディレクトリ名またはリポジトリ基準の相対パスを改行区切りで指定 |
fail-on | critical | この重大度以上の検出結果があればステップを失敗させます(info、warning、critical)。空にするとゲートを無効にします |
include-translations | false | translations/<locale>/... もスキャンします(デフォルトでは en ツリーのみ) |
offline | true | PyPI のライブ検索をスキップし、モデルのピン留めを同梱カタログのみでチェックします |
出力
| 出力 | 説明 |
|---|---|
critical-count | 重大度が critical の検出結果数 |
warning-count | 重大度が warning の検出結果数 |
info-count | 重大度が info の検出結果数 |
findings-path | この実行で生成された未加工の findings.json のパス |
オフラインがデフォルトである理由
PyPI の参照にはライブネットワークへの接続が必要です。CI に1行追加しただけで、デフォルトで第三者にネットワーク接続を強いるべきではありません。offline: true(デフォルト)の場合、Action はモデルのピン留めを、このリポジトリに同梱されたカタログと照合するだけです。チェックアウト自体を除き、外部への接続はありません。offline: false に設定すると、ライブの PyPI JSON API を使ってパッケージのバージョンのずれも検出します。
一切触れないもの
Action は Ed25519 署名キーにも、公開チェーン(oracle/chain.jsonl)にも触れません。与えられたチェックアウトと Action に同梱されたカタログを読み取るだけで、実行先のリポジトリには何も書き戻しません。
レシートを自分で検証する
すべての応答には receipt オブジェクトが含まれています。これは、何がいつ、どのキーによって見つかったかを示し、それ以前に公開されたすべてのレポートにつながる署名付きの記述です。verify_report を使えば MCP 経由で検証できますが、その処理はブラックボックスではありません。実際の処理を行う2つのファイルは短く、読みやすいものです。
oracle/receipt.pyはレシートを作成して署名します。ペイロードを正規化し(RFC 8785)、ハッシュ化し(SHA-256)、そのハッシュに署名します(Ed25519)。worker/src/logic.tsは TypeScript で同じ手順を実行し、署名を検証します。2つのファイルを並べて読めば、疑う余地はありません。
oracle/verify_chain.py は oracle/chain.jsonl の公開履歴全体をたどり、すべての署名が有効で、各エントリーが1つ前のエントリーに正しくつながっていることを確認します。これは、レシート1件だけではなく記録全体に対して、購入者や外部監査人が行う検証です。
無料で署名済みのスキル
skills/course-drift-check/SKILL.md は、このオラクルを使うための正しい手順をエージェント向けに記したものです。支払い前に販売者を監査し、どちらかの決済方式で支払い、支払い後に商品を検証します。これは無料で、署名もされています。同じ Ed25519 キーで署名された receipt.json が隣にあり、ファイルの正確な SHA-256 を確定しています。このキーはすべてのレポートにも署名しているため、スキルを読み込むエージェントは、運営者が公開した手順を改変されていない状態で実行していることを証明できます(oracle/sign_skill.py は100行の署名ツールで、検証にこちらから提供するものは何も必要ありません)。署名が証明するのは出所と完全性であり、正しさではありません。これは、このレシートのすべてが示す同じ境界です。
支払い
2つの決済方式で、同一の商品を利用できます。
- MPP(Machine Payments Protocol)は、カードまたはステーブルコインでの決済を想定して設計されています。このデプロイでは現在、Tempo テストネットで課金しています。
- x402 は USDC で決済します。主な目的はサービスを見つけてもらうことです。x402 Bazaar でサービスを検索するエージェントが見つけられるのは、x402 ファシリテーターを通じて決済するサービスだけです。
現在、両方の決済方式ともテストネットで稼働しています。MPP は Tempo テストネット、x402 は Base Sepolia を利用しています。x402 の決済処理は、エンドツーエンドで実証済みです。2026-08-28 に、稼働中のワーカーに対する実際のテストネット決済が完了しました(clients/ の購入者クライアントが $0.25 USDC の支払いに署名し、ファシリテーターが Base Sepolia で決済し、クライアントは支払い対象の調査結果ハッシュを独自に検証しました。7 passed, 0 failed, 0 skipped)。メインネットでは資金は一切移動しておらず、MPP の決済もまだ実施されていません。どちらも、曖昧にせず明記しています。証明を自分で再現できます。使い捨てウォレットにフォーセットの USDC を用意し(ETH は不要です)、clients/buyer/README.md の「Wiring a real x402 payer」に従って購入者を実行してください。
このリポジトリの内容
oracle/ the scanner and the signing code
(to run it locally: clone the course repo it scans, then
python3 oracle/drift_scan.py --repo-root /path/to/ai-agents-for-beginners
with no course checkout, --offline runs the model-pin
checks only)
worker/ the MCP server: four free tools, six paid tools, HTTP 402
web/ the storefront pages served alongside the endpoint
clients/ an independent buyer client - run it yourself before you pay
このミラーの元となった非公開リポジトリ Project-Office には、日々の作業プロセス、デプロイの自動化、認証情報が含まれています。このサービスの利用や検証にそれらは必要ないため、ここには含まれていません。
正直な限界
- 現時点では、支払いはメインネットではなくテストネットで決済されます。
- このスキャナーが照合するモデルとパッケージのカタログは手作業で管理されており、現時点では対象となるモデルは限られています。対象範囲はサイクルごとに拡大していますが、まだ網羅的ではありません。
- 署名検証により、レポートがこのサービスによって生成され、改ざんされていないことを確認できます。レポートの正確性までは証明できません。その主張の根拠は各指摘事項内で引用された情報源にあり、ご自身で確認できます。
ライセンス
ライセンスファイルは含まれていません。ライセンスがない場合、すべての権利はデフォルトで留保されます。これはリポジトリの所有者が明示的に決定すべき事項であり、見落としではありません。
お問い合わせ
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。