mcpField
R
react-render-profile-mcp

react-render-profile-mcp

ローカル
github.com/vola-trebla開発ツール223 週間前に更新

react-render-profile-mcp について

react-render-profile-mcpは、React DevTools Profilerのエクスポートを分析し、描画問題を診断するコーディングエージェント向けMCPサーバーです。ソースコードの修正、RSCストリームの分析、Chromeトレースとの相関にも対応します。

主な機能

  1. 01コミットと描画時間の集計
  2. 02不要な再描画の検出
  3. 03効果の高いメモ化の提案
  4. 04コンポーネントソースの修正
  5. 05RSCストリームとセキュリティの分析
  6. 06ChromeトレースとWeb Vitalsの相関

活用シーン

  1. 01状態更新による描画カスケードの追跡
  2. 02ハイドレーション不一致とSuspenseの滝の診断
  3. 03React Compilerルールの監査
  4. 04コミットがCLSとINPに与える影響の評価

MCP 対応

React Profilerファイルの分析、ソースコードの監査と修正提案、トレース相関のためのツールをMCPクライアントに提供します。描画カスケードを可視化するMCPリソースも備えています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"vola-trebla-react-render-profile": {
"command": "npx",
"args": [
"-y",
"react-render-profile-mcp"
]
}
}
}
起動コマンドnpx -y react-render-profile-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmreact-render-profile-mcp1.0.2

ツール

13

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
profile_pathstringはいReact DevTools Profiler のエクスポートファイル(.json)の絶対パス

詳細

react-render-profile-mcp

npm version npm downloads CI License: MIT

Model Context Protocol(MCP)サーバーとして提供される、React 向けの自律型パフォーマンス SRE &自動修復エンジンです。AI コーディングエージェント(Claude、Cursor、Copilot)のパフォーマンス認識のギャップを埋めるために特化して構築されています。


👁️ 死角:AI エージェントが React の本番環境を壊す理由

AI エージェントが Context Provider をリファクタリングしたり、状態アーキテクチャを変更したり、グローバルストアを接続したりすると、実行時のパフォーマンスへの影響がまったく見えません。

エージェントはユニットテストに成功し、コードをコンパイルできても、次のような壊滅的なパフォーマンスの低下を引き起こすことがあります。

  • 1 回の状態更新が連鎖し、不要な子コンポーネントの再レンダリングが 80 回発生する。
  • 不安定な Zustand/Redux セレクター参照によって無限レンダリングループが発生する。
  • ハイドレーションの不一致により、React がサーバーでレンダリングされた HTML を破棄し、最初からマウントし直す。
  • 不安定な key プロパティによって、レンダリングサイクルごとにコンポーネントがアンマウントおよびマウントされる(ライフサイクルの異常)。

react-render-profile-mcp は、AI エージェントに「第三の目」を与え、こうしたパフォーマンスのボトルネックを動的に測定、可視化し、自動修復します。


⚡ AI-SRE の 4 つの柱

このサーバーは生の JSON ダンプではなく、パフォーマンスデータを 4 つの主要なエンジニアリングの柱に沿って、構造化された実用的なインサイトとして整理します。

🧠 1. AST 自動修復エンジン(ts-morph)

ボトルネックが見つかった場合、エージェントがコードを手動で書き換える必要はありません。サーバーはディスク上のコンポーネントのソースコードを変更できます。

  • ホイスティング:オブジェクトリテラルと配列リテラルをレンダー関数の外に静的に移動します。
  • 動的メモ化:計算した依存配列を使って、不安定な関数や変数を useCallback および useMemo でラップします。
  • ROI に基づくラップ:プロファイルで測定された自己実行時間と無駄なレンダリング回数から、比較のオーバーヘッドを正当化できる場合に限り、コンポーネントを React.memo でラップします(ROI > 1.5)。
  • ルール監査:コンパイラの最適化を妨げないようにコードをスキャンします(Date.now()、Math.random()、レンダー中の useRef の変更を検出します)。
📊 2. インタラクティブ SVG カスケードビジュアライザー(MCP リソース)

カスタムのリソース URI スキーム react-profile://commits/{commitId}/cascade?profile_path={profile_path} を使って、親子間のレンダリンググラフをエージェントのチャットウィンドウに直接生成します。

  • トリガーは、それぞれ異なる HSL パレットでスタイル設定され、伝播経路を区別できます。
    • 🔵 Context トリガー:青(海の波)
    • 🟠 Zustand/Redux ストア:オレンジ(サブスクライバーへの波紋)
    • 🔴 Props の無効化:赤(参照の不一致)
    • 🟢 状態変更:緑(エメラルド色のトリガー元)
🛡️ 3. RSC Flight ストリーム&セキュリティプロファイラー

React Server Components(RSC)の Flight ストリームを分析し、配信を最適化します。

  • 膨張したチャンク(> 50KB)と逐次的なウォーターフォールを特定します。
  • **CVE-2025-55182(React2Shell)**の悪用のような、プロトタイプ走査の脆弱性がないかペイロードをスキャンします。
⚛️ 4. マルチレイヤー・トレース相関器

blink.user_timing マーカーを使って、React のコミットと Chrome Performance のタイムラインイベントを対応付けます。

  • コミット後のレイアウト、ペイント、スタイル計算タスクを測定し、Core Web Vitals への実際の影響(CLS / INP の推定値)を算出します。

🛠️ MCP ツールリファレンス

以下は、このサーバーが公開するツールの概要です。すべてのツールで、React DevTools のエクスポート .json を指定する必須の profile_path を受け取ります。

ツール名パラメーター目的/出力
get_render_summaryprofile_pathコミット数、合計レンダー時間、不要なレンダーの数、ライフサイクルの異常の概要を表示します。
find_spurious_rendersprofile_path, min_render_count?props/state が同一のままレンダーされたコンポーネントを一覧表示します。トリガーを UNSTABLE_PARENT_REF または CONTEXT_UPDATE に分類します。
analyze_compiler_efficacyprofile_path, invalid_threshold?Invalidation Index を算出し、React Compiler または React.memo が適用されていない箇所を特定します。
diagnose_hydration_and_suspenseprofile_path, waterfall_threshold_ms?サーバーとクライアント間のハイドレーションの不一致、およびネストされた Suspense のフェッチウォーターフォールを検出します。
evaluate_external_store_performanceprofile_path, max_blocking_task_ms?不安定な useSyncExternalStore セレクターと、優先度の高い同期ブロッキングタスクを検出します。
trace_state_cascade_footprintprofile_path, commit_index仮想オーナーツリーをたどり、更新の伝播深度とコンシューマー数を測定します。
suggest_memoizationprofile_path, min_wasted_ms?平均セルフタイム(しきい値は > 2ms)に基づき、ROI の高い React.memo の適用を提案します。
remediate_componentfile_path, component_name, unstable_props, roi_scoreAST をディスク上で変更し、変数の巻き上げ、フックのラップ、メモ化の適用を行います。
audit_compiler_rulesfile_path, component_nameコンポーネントのソースコードを静的に監査し、React Compiler のルール違反を検出します。
profile_rsc_streamstream_payloadRSC Flight ログを解析し、チャンクサイズ、ウォーターフォール、React2Shell の悪用を監査します。
correlate_chrome_traceprofile_path, trace_pathReact のコミットを Chrome のトレースイベントに合わせ、CLS/INP のウェブバイタルへの影響を算出します。

🤖 プロンプトインジェクション:エージェントにプロファイリングを教える

このサーバーを最大限に活用するには、次のプロンプトをエージェントのシステム指示に追加してください(例:.cursorrules、Cursor System Prompt、または Claude Custom Instructions)。

You are equipped with `react-render-profile-mcp`. Use it systematically whenever:

1. You make structural changes to React components, global state providers, or store selectors.
2. The user reports lag, slow input response, or UI stuttering.
3. You refactor context providers, Zustand selectors, or Redux dispatches.

Debugging Workflow:

- Ask the user to record and export a React DevTools profile (.json).
- Run `get_render_summary` to understand the scale of the problem and look for `lifecycle_anomaly: true` (unstable keys).
- Run `find_spurious_renders` and `analyze_compiler_efficacy` to pinpoint unstable prop references.
- Call the `react-profile://commits/{commitId}/cascade` resource to visualize cascades.
- Use `remediate_component` to automatically apply AST optimizations (hoisting static variables, wrapping hooks) instead of doing it manually.

📋 プロファイルのエクスポート方法

  1. ブラウザーで React DevTools を開きます。
  2. Profiler タブに移動します。
  3. Record ボタン(円形)をクリックし、アプリケーションを操作してパフォーマンスの問題を再現してから、Stop をクリックします。
  4. Save Profile アイコン(💾)をクリックして、.json ファイルをダウンロードします。
  5. このファイルの絶対パスを MCP サーバーに指定します。

⚙️ セットアップとインストール

Claude Desktop

claude_desktop_config.json に次の内容を追加します。

{
  "mcpServers": {
    "react-render-profile": {
      "command": "npx",
      "args": ["-y", "react-render-profile-mcp"]
    }
  }
}
Cursor / VS Code / その他のクライアント

command タイプの MCP サーバーを追加します。

  • コマンド:npx -y react-render-profile-mcp

🔧 内部の仕組み

  • ESM ネイティブ:TypeScript ESM で構築され、高速な Node.js インポート向けに最適化されています。
  • React DevTools v5 プロトコル:シリアライズされた操作配列をネイティブにデコードし、ファイバースナップショットと名前マップを解決します。
  • レーンの識別:高優先度レーンの更新と、並行トランジションのコミット(低優先度/アイドル)を区別し、誤検知による回帰フラグを防ぎます。
  • AST 変更の安全性:ts-morph のステートメント操作ブロックを実装し、複数回の書き換え時によくあるパーサー状態の破損を回避します。

MCP ツールベルトの一部

以下とともに開発されました。

  • tailwind-context-resolver-mcp — Tailwind のデザイントークンを解決し、ユーティリティクラスを検証します。
  • v8-cpu-profile-decoder-mcp — Node.js バックエンドのパフォーマンス調整向けに V8 の CPU プロファイルをデコードします。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。