TabbitBlog

Chrome DevTools MCP 入門:実際のエラーをデバッグする

固定バージョンを接続し、コンソールとネットワークで失敗を追い、修正後の状態を確認します。

この記事の内容
  1. ブラウザの接続方法を選ぶ
  2. 固定バージョンを登録して練習を始める
  3. 再現して二種類の証拠を集める
  4. 一つのパスを直して同じ操作を試す
  5. 性能トレースでは別のことを測る
  6. 利用者二人の報告
  7. 実行中のブラウザに接続できますか?

Chrome DevTools MCP ではページ、コンソール、通信、性能トレースを調べられます。一つの症状から原因のリクエストやコードを追います。練習ページで読み込みエラーを再現し、パスを一つ変更して結果を確認します。

ブラウザの接続方法を選ぶ

新しいアプリや練習では分離環境を使います。公式ツールはデバッグ可能なブラウザへの browserUrl や wsEndpoint、対応 Chrome 向けの autoConnect も提供します。既存セッションにはログイン済みページや保存データがあります。許可済みプロファイルとオリジンに範囲を絞ります。今回は Tabbit Browser Dev の実行ファイルを明示して分離起動しました。検証した環境での結果です。

Chrome for Developers

固定バージョンを登録して練習を始める

クライアントでローカル stdio を設定します。chrome-devtools-mcp 1.12.0 と下の実行ファイルで試しました。パスは自分の環境に合わせます。利用統計と CrUX 検索は無効にしました。二つのファイルを同じフォルダーへ保存し、Python を実行して表示されたローカル URL を開きます。

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@1.12.0",
        "--executablePath",
        "/Applications/Tabbit Browser Dev.app/Contents/MacOS/Tabbit Browser Dev",
        "--isolated",
        "--headless",
        "--viewport=1000x565",
        "--usageStatistics=false",
        "--performanceCrux=false"
      ]
    }
  }
}

fixture.py · fixture.html

python3 fixture.py --port 8765

再現して二種類の証拠を集める

ページを開き、スナップショットを取得し、Load records を一度クリックします。現在の pageId と uid を使います。画面は Could not load records。list_console_messages は F02 load failed: HTTP 404 を返し、fetch に絞った list_network_requests は GET /api/record [404] を返しました。get_network_request で詳細を確認します。別の favicon 404 は無関係です。

手順ツール期待結果
1take_snapshot + clickCould not load records
2list_console_messagesF02 load failed: HTTP 404
3list_network_requests + get_network_requestGET /api/record [404]

Chrome DevTools MCP · Tool reference

一つのパスを直して同じ操作を試す

サーバーは /api/records を提供しますが、コードは /api/record を要求しています。fixture.html の fetch を直して保存します。同じページを再読み込みし、新しいスナップショットで同じボタンをクリックします。通信は 200、画面は Loaded: F02-FIXED となり、元のアプリエラーは再発しませんでした。両方の記録を残します。

- const response = await fetch("/api/record");
+ const response = await fetch("/api/records");

Loaded: F02-FIXED を表示した Tabbit の画面

性能トレースでは別のことを測る

機能確認後に performance_start_trace を reload と autoStop で実行しました。単一のローカル測定は LCP 386 ms、TTFB 2 ms、CLS 0.00。CPU とネットワークに制限はなく、実ユーザーデータもありません。この結果はトレース取得の確認であり、高速化の証拠ではありません。同じ負荷と環境で測定を繰り返します。

ツール期待結果
LCP386 ms
TTFB2 ms
CLS0.00

利用者二人の報告

r/ClaudeAI では通信とコンソールで欠落リソースと別の例外を区別した報告がありました。r/mcp では MCP で起動したブラウザが普段より遅いとの報告がありました。別環境の事例です。正確な通信とブラウザモードを記録し、性能は別に測ります。

r/ClaudeAI r/mcp

実行中のブラウザに接続できますか?

許可されたデバッグ先があり環境が対応していれば接続できます。既存セッションが必要な場合以外は分離環境から始めます。

よくある質問

実行中のブラウザに接続できますか?

許可されたデバッグ先があり環境が対応していれば接続できます。既存セッションが必要な場合以外は分離環境から始めます。

Chrome DevTools MCP では何を確認できますか?

Chrome DevTools MCP ではページ、コンソール、通信、性能トレースを調べられます。一つの症状から原因のリクエストやコードを追います。練習ページで読み込みエラーを再現し、パスを一つ変更して結果を確認します。

サーバーはどう登録しますか?

クライアントでローカル stdio を設定します。chrome-devtools-mcp 1.12.0 と下の実行ファイルで試しました。パスは自分の環境に合わせます。利用統計と CrUX 検索は無効にしました。二つのファイルを同じフォルダーへ保存し、Python を実行して表示されたローカル URL を開きます。

修正をどう検証しますか?

サーバーは /api/records を提供しますが、コードは /api/record を要求しています。fixture.html の fetch を直して保存します。同じページを再読み込みし、新しいスナップショットで同じボタンをクリックします。通信は 200、画面は Loaded: F02-FIXED となり、元のアプリエラーは再発しませんでした。両方の記録を残します。

ローカルトレース一回で何が分かりますか?

機能確認後に performance_start_trace を reload と autoStop で実行しました。単一のローカル測定は LCP 386 ms、TTFB 2 ms、CLS 0.00。CPU とネットワークに制限はなく、実ユーザーデータもありません。この結果はトレース取得の確認であり、高速化の証拠ではありません。同じ負荷と環境で測定を繰り返します。

次のステップへ

Tabbit と一緒に仕事をしましょう。

タブをまたいで調査し、繰り返しのブラウザ作業を自動化し、あらゆる文脈を手の届くところに。