Valid — Vehicle Identity Mcp Server について
AI Agent Visibility は、AI エージェントやクローラーが利用する形式にサイトのコンテンツを変換する Cloudflare Worker テンプレートです。Workers AI でページを拡充して KV にキャッシュし、Markdown、JSON インデックス、クローラー指示、JSON-LD などを提供します。
主な機能
- 01Workers AI でコンテンツを拡充
- 02拡充したページを KV にキャッシュ
- 03llms.txt と Markdown ページを提供
- 04JSON インデックスと JSON-LD を提供
- 05クローラー指示と任意の認証確認を提供
活用シーン
- 01エージェントが読める形式でサイトページを公開
- 02エージェントの根拠付けや引用用に構造化データを提供
- 03付属 UI で発見用サーフェスをプレビュー
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://bzejstotdvsalpiqywbj.supabase.co/functions/v1/valid-mcpclaude mcp add --transport http vali-soul https://bzejstotdvsalpiqywbj.supabase.co/functions/v1/valid-mcp{"mcpServers":{"vali-soul":{"type":"http","url":"https://bzejstotdvsalpiqywbj.supabase.co/functions/v1/valid-mcp"}}}Cursor で開く{"servers":{"vali-soul":{"type":"http","url":"https://bzejstotdvsalpiqywbj.supabase.co/functions/v1/valid-mcp"}}}VS Code で開く{"mcpServers":{"vali-soul":{"type":"http","url":"https://bzejstotdvsalpiqywbj.supabase.co/functions/v1/valid-mcp"}}}{"mcpServers":{"vali-soul":{"serverUrl":"https://bzejstotdvsalpiqywbj.supabase.co/functions/v1/valid-mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://bzejstotdvsalpiqywbj.supabase.co/functions/v1/valid-mcp認証が必要ツール
詳細
AI エージェントの可視性
検索はリンクから回答へと移行しています。回答に表示されるには、各 AI エージェントやクローラーが求める形式で、コンテンツを読み取れるようにする必要があります。このテンプレートは、Workers AI を利用し、ひとつのコンテンツストアから、あらゆるエージェント発見用サーフェスでサイトを見つけやすくします。
仕組み: Worker は Workers AI を使ってコンテンツを一度だけ拡充し、わかりやすいタイトル、エージェント向けの概要、要点、トピックタグを作成して、KV にキャッシュします。その後、エージェントからのリクエストが想定されるすべてのサーフェスに、同じストアの内容を反映します。
/llms.txtおよび/llms-full.txt— llms.txt のインデックス規約/index.json— 構造化エージェント向けの型付き JSON インデックス/<slug>.md— ページごとの整形済み Markdown。グラウンディングや引用に最適です/robots.txt— 名前を指定した AI クローラーを明示的に許可するディレクティブContent-Signalヘッダー — エージェントによるコンテンツの利用方法を宣言します- JSON-LD(
/jsonld、/<slug>.jsonld)— 従来型および AI クローラー向けの schema.org 構造化データ - Web Bot Auth (任意) — 署名済みエージェントの ID を検証します(RFC 9421、Ed25519)
エージェントが好む形式にかかわらず、同じデータを提供します。バンドルされた UI を使えば、各サーフェスをリアルタイムでプレビューしてコピーできます。
このテンプレートにはサンプルコンテンツが含まれているため、デプロイ後すぐに動作します。src/lib/content.ts を編集して独自のページに対応させるか、/api/resources にコンテンツを POST して、その場で拡充できます。
対象ユーザー
- AI の回答に表示されたいすべての方。 読者が検索結果をクリックする代わりに ChatGPT、Claude、Perplexity に質問することが増えているなら、エージェントが引用できる、コンテンツの整理された構造化コピーを提供できます。
- AEO(Answer Engine Optimization)を試している開発者。 新たに登場しているエージェント発見用の各種規約を、ひとつの Worker でまとめて確認できる実用的なリファレンスです。
- エージェントからの 4xx が頻発しているチーム。 ボット分析で、AI エージェントが読み取れないパスにアクセスしていることがわかった場合に、エージェントが読めるコンテンツを提供して解決できます。
コマースに特化したバージョンをお探しですか?
commerce-llms-txt-templateをご覧ください。商品カタログに特化した/llms.txtを提供します。このテンプレートは、より汎用的で複数のサーフェスに対応するものです。
はじめに
このリポジトリ以外でこのテンプレートを使って新しいプロジェクトを始めるには、C3(create-cloudflare CLI)を使用します。
npm create cloudflare@latest -- --template=cloudflare/templates/agent-visibility-template
上記の Deploy to Cloudflare ボタンを使うと、プルリクエストごとにライブプレビューが生成されます。
セットアップ
-
依存関係をインストールします。
npm install -
KV 名前空間を作成し、その ID を
wrangler.jsoncに追加します(サンプルの名前空間 ID を置き換えてください)。npx wrangler kv namespace create VISIBILITY_CACHE -
wrangler.jsoncのvarsにサイト情報(SITE_NAME、SITE_DESCRIPTION)を設定します。 -
(任意)実行時書き込み API を使用する場合は、管理者シークレットを設定します。設定するまで
POSTルートは無効です。npx wrangler secret put ADMIN_TOKEN -
ローカルで実行します。
npm run dev -
デプロイします。
npm run deploy
デプロイ後
Worker はバンドルされたサンプルコンテンツを使ってすぐに稼働するため、データソースは 必要ありません。ルート URL にアクセスしてサーフェスエクスプローラー UI を表示し、ライブの エージェント向けサーフェスを確認してください。
https://<your-worker>/llms.txtおよび/llms-full.txthttps://<your-worker>/index.jsonhttps://<your-worker>/getting-started.md(サンプルのスラッグは任意)https://<your-worker>/robots.txt
サーフェスへの最初のリクエスト時に Workers AI でコンテンツが拡充され、キャッシュされます。 以降のリクエストには KV から応答します。サンプルコンテンツを置き換えて (独自のコンテンツを追加するを参照)、自分のサイトに合わせてください。
設定
すべての設定は、vars 内の wrangler.jsonc に記述します。
| 変数 | 説明 | デフォルト |
|---|---|---|
SITE_NAME | サイト名。すべての画面に表示されます | Acme Docs |
SITE_DESCRIPTION | エージェント向けの一行説明 | (サンプル) |
AI_MODEL | コンテンツ強化に使用する Workers AI モデル | @cf/meta/llama-3.3-70b-instruct-fp8-fast |
ENRICHMENT_CACHE_TTL | 強化済みレコードを KV にキャッシュする秒数 | 3600 |
CONTENT_SIGNAL | Content-Signal ポリシー(robots.txt とヘッダーとして出力) | ai-input=yes, search=yes, ai-train=no |
ENABLE_WEB_BOT_AUTH | オプションのエージェント識別機能を公開するかどうか | false |
シークレット(npx wrangler secret put <NAME> で設定し、コミットしないでください):
| シークレット | 説明 |
|---|---|
ADMIN_TOKEN | 変更を行う API ルート(POST /api/resources、POST /api/refresh)に必要なベアラートークンです。未設定の場合、これらのルートは 401 を返します。 |
独自のコンテンツを追加する
オプション A — ソースを編集する: src/lib/content.ts のエントリーを独自のページ(slug、url、任意の title、および HTML または Markdown の body)に置き換えてから、再デプロイします。
オプション B — 実行時に POST する: ADMIN_TOKEN を設定し、コンテンツを API に送信すると、ただちに強化されて追加されます。
curl -X POST https://your-worker.workers.dev/api/resources \
-H "authorization: Bearer $ADMIN_TOKEN" \
-H "content-type: application/json" \
-d '{"slug":"about","url":"https://example.com/about","title":"About","body":"<h1>About us</h1>..."}'
スラッグは ^[a-z0-9-]{1,63}$ に一致する必要があります。url は http(s) である必要があり、本文は 100 KB までです。ストアには最大 100 個のリソースを保存できます。ソースからキャッシュを消去して再強化するには、(認証も必要な)POST /api/refresh を呼び出してください。
エンドポイント
| メソッド | パス | 説明 |
|---|---|---|
| GET | /llms.txt | llms.txt インデックス(Markdown) |
| GET | /llms-full.txt | 全コンテンツをインライン化したもの(Markdown) |
| GET | /index.json | 型付き JSON インデックス |
| GET | /:slug.md | ページごとの Markdown |
| GET | /:slug.jsonld | ページごとの schema.org JSON-LD |
| GET | /jsonld | サイト全体の schema.org JSON-LD |
| GET | /robots.txt | AI ボット向けの指示 |
| GET | /api/site | サイト設定とサーフェス一覧(UI で使用) |
| GET | /api/resources | 拡張されたリソースの JSON |
| GET | /api/resources/:slug | 単一の拡張リソース |
| POST | /api/resources | リソースを拡張して追加/置換します(ADMIN_TOKEN が必要) |
| POST | /api/refresh | 拡張キャッシュをクリアします(ADMIN_TOKEN が必要) |
| GET | /.well-known/web-bot-auth/directory | 信頼されたエージェントキー(有効な場合) |
| POST | /api/identity | 署名付きエージェントリクエストを検証します(有効な場合) |
キャッシュ
拡張処理はコストのかかるステップ(ページごとに Workers AI を 1 回呼び出す)であるため、結果は KV の単一キーにキャッシュされ、ENRICHMENT_CACHE_TTL が期限切れになるまで再利用されます(デフォルトは 1 時間)。POST /api/resources は新規または変更されたページのみを拡張し、キャッシュをその場で更新します。POST /api/refresh はキャッシュをクリアするため、次の読み取り時にソースから再度拡張されます。Workers AI が一時的に利用できない場合、Worker は決定論的な拡張処理にフォールバックし、その劣化した結果を 60 秒間だけキャッシュします。これにより、一時的な障害がサーフェスに TTL 全体にわたって影響することを防ぎます。
既知の制限事項
- 拡張処理はリクエストの処理中に実行されます。 キャッシュが空の状態からの最初のリクエストでは、すべてのページをインラインで拡張するため、キャッシュ済みの読み取りより時間がかかります。大規模なサイトでは、拡張処理をキューまたはスケジュールされた Cron Trigger に移してください。
- ストアは 2 つの KV キーに保存され、KV の制限を十分に下回るよう、リソース数は 100 件、本文は 100 KB に制限されています。より大規模なカタログでは、リソースごとに KV キーを 1 つ使用する方法(または D1)に切り替え、ページネーションを追加してください。
- KV は結果整合性です。
POSTの後、別のリージョンでのサーフェス読み取りでは、一時的に以前のバージョンが返されることがあります。 - 実行時の書き込みでは KV の読み取り・変更・書き込みを行います。 更新 API は軽量な管理者向け更新を想定しています。並行書き込みは避けてください。高頻度のワークフローや複数の書き込み元があるワークフローでは、Durable Object を通じて書き込みを直列化するか、ストアを D1 に移してください。
- Web Bot Auth は最小限のリファレンス実装です(以下を参照)。堅牢化された実装ではないため、依存する前に現在のドラフトを確認してください。
任意:Web Bot Auth(エージェントの身元確認)
これまでの内容はすべて、コンテンツを読み取り可能にすることについてでした。Web Bot Auth は別の側面を担います。適切に動作するエージェントが、署名付きリクエスト(RFC 9421、Ed25519)で自分が何者かを証明できるようにします。デフォルトでは無効です。ENABLE_WEB_BOT_AUTH=true を設定すると、/.well-known/web-bot-auth/directory に鍵ディレクトリが、/api/identity に検証エンドポイントが公開されます。src/lib/web-bot-auth.ts のサンプルキーを、実際に信頼するエージェントのキーに置き換え、本番環境で利用する前に最新の Web Bot Auth ドラフトを確認してください。
テスト
npm test
テストスイートは公開インターフェイスにアクセスする前に KV キャッシュにデータを投入するため、Workers AI リクエストを行わずにローカルで実行できます。
ライセンス
リポジトリの LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。