Unrendered: AI Crawler Checker について
Unrendered: AI Crawler Checkerは、AIクローラーから見たウェブサイトを調べるMCPサーバーです。ローカルのGoogle Chromeで拡張機能の分析コードを実行し、生HTMLとブラウザー描画後のページを比較して、クローラーのアクセス状況や差異を報告します。
主な機能
- 01生HTMLと描画後の内容を比較
- 02生HTML内のコンテンツ範囲を測定
- 03メタデータとJavaScript後のテキストを確認
- 04ボットのrobots.txtルールと応答を確認
- 05ローカルのChromeで分析を実行
活用シーン
- 01JavaScriptなしのクローラーに見えない内容を特定
- 02AIボットのアクセスとrobots.txtルールを確認
- 03ソースと描画後のページの違いを調査
MCP 対応
このMCPサーバーは、ページと生HTMLを比較する`analyze_page`と、robots.txtの判定やボットのリクエスト結果を調べる`check_ai_bots`を提供します。MCPクライアントはこれらのツールでURLを検査できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
unrendered-mcp:AI クローラーチェッカー MCP サーバー
AI アシスタントに、Unrendered Chrome 拡張機能による分析結果を提供する MCP サーバーです。JavaScript を実行しないクローラーが受け取る内容(生の HTML)と、ブラウザーがページをレンダリングした結果を比較します。
分析を再実装するものではありません。拡張機能独自のスナップショットコード(src/content/snapshot.ts)、analyze、robots.txt パーサー、ボット分類器をバンドルし、インストール済みの Google Chrome 内で変更せずに実行します。
インストール
Node 20 以降と Google Chrome が必要です。ブラウザーはダウンロードされません。
npx -y unrendered-mcp
Claude Code
claude mcp add unrendered -- npx -y unrendered-mcp
Claude Desktop
claude_desktop_config.json に追加します。
{
"mcpServers": {
"unrendered": {
"command": "npx",
"args": ["-y", "unrendered-mcp"]
}
}
}
Chrome が見つからない場合、ツールはその旨を示すエラーを返します。UNRENDERED_CHROME_CHANNEL で別の Chromium チャンネルを指定できます(既定値は chrome です)。
既定では、URL のホストがループバック、プライベート、リンクローカル、マルチキャストのアドレスである場合、またはそれらのアドレスに解決される場合、ツールはその URL を拒否します。これは、URL が悪意のあるページを読んだ可能性のあるモデルから渡されるためです。ローカルの開発サーバーを分析するには、UNRENDERED_ALLOW_PRIVATE_HOSTS=1 を設定してください。Chrome はサンドボックスを有効にした状態で実行されます。
ツール
analyze_page({ url })
URL をヘッドレス Chrome で読み込み、ページの分離されたワールドで拡張機能のスナップショットを取得し(コンテンツスクリプトと同様に実行します)、analyze を実行して、コンパクトな JSON オブジェクトを返します。
coverage:メインコンテンツと、表示されているすべてのテキストのうち、生の HTML に単語が含まれている割合。単語数と使用した基準(main-landmarkまたはoutside-landmarks)も含まれますmain_content_words:生の HTML で見つかった単語、JSON-LD またはハイドレーションデータ内でのみ見つかった単語、JavaScript の実行後にのみ存在する単語missing_from_raw_html:JavaScript の実行後にのみ存在する最大のテキストブロック(切り捨てられ、最大 15 件)fields:タイトル、メタディスクリプション、canonical、hreflang、html lang、robots メタ、JSON-LD の差分(最大 30 行)links_only_after_javascript、text_in_raw_html_removed_by_javascriptgate:生のリクエストがチャレンジページ(Cloudflare、AWS WAF、DataDome)、HTTP エラー、別の URL、またはフェッチ失敗の場合、カバレッジは計算されず、その理由がgateに示されますnot_checked:今回の実行で検証されなかった項目
check_ai_bots({ url })
拡張機能のリストにある各ボットについて、URL に対する robots.txt の判定(該当するルールと行を含む)と、そのボットの公開ユーザーエージェントでリクエストしたときにサーバーが返す結果(same、different、blocked、challenged、rate-limited、redirected-elsewhere、error)を返します。noindex も含まれます。検証済みのユーザーエージェント文字列がないボット、Googlebot と Applebot(拡張機能では模倣しません)、Google-Extended などの制御用トークンについては、robots.txt の判定のみを返します(http: "not_probed")。
どこで何が実行されるか
- すべての処理はお使いのマシン上で実行されます。呼び出しごとに Chrome がヘッドレスで起動し、処理後に終了します。
analyze_pageはその Chrome でページを読み込みます。ページは独自のリソースをリクエストし、生の HTML は拡張機能と同様にページ自体から 3 回リクエストされます。check_ai_botsは Node から/robots.txtと URL を約 20 回、順番にリクエストします。Chrome のユーザーエージェントと各ボットのユーザーエージェントを使用します。- 分析コードは、ブラウザーの DOM パーサーを必要とするため、空白の Chrome ページで実行されます。
プライバシー
分析対象サイト(および、そこからリダイレクトされる先やリソースを読み込むアドレス)へのリクエストを除き、データが外部に送信されることはありません。分析、テレメトリー、アカウント、保存データは一切ありません。呼び出しごとに新しい一時的な Chrome プロファイルを使用し、終了時に破棄します。
拡張機能との既知の違い
- 拡張機能 API を使わないとクローズドシャドウルートにはアクセスできないため、そのテキストはレンダリング済み側には存在しないものとして扱われます。
- ブラウザーはヘッドレスで、1280x720、
en-USに設定されており、ログイン情報や Cookie はありません。ユーザーエージェントはHeadlessマーカーを含まない Chrome のものです。 check_ai_botsはブラウザーではなく Node からリクエストを送信するため、TLS フィンガープリントと一部のヘッダーが Chrome と異なり、Cookie も送信されません(ボットのプローブでは拡張機能も Cookie を送信しません)。レンダリング済みのページが読み込まれず、document.characterSetを読み取れないため、文字セットのフォールバックはutf-8です。
開発
pnpm install
pnpm build # bundles the page scripts and the server into dist/
pnpm typecheck
pnpm parity # compares this server with the extension's panel on 20 URLs (build the extension in the repo root first)
ライセンス
AGPL-3.0-only。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。