Local MCP companion and HTTP ingest for React Profiler samples
React Profiler MCP has 10 tools with complete schemas and descriptions, but quality is uneven. All tools have input schemas with type definitions and descriptions, meeting baseline requirements. However, descriptions are often generic or lack actionable context for LLM selection. Tool naming is verb-forward and clear (list_, get_, analyze_, explain_, suggest_). No parameter descriptions explain constraints, ranges, or dependencies. Output schemas are not documented, LLMs cannot predict response structure. Error handling is absent from descriptions. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Composition is reasonable: tools are single-purpose and chainable via sessionId. Security: no secrets exposed as parameters. Overall: functional but below production grade.
Full report: top offenders, frequent re-renders, heuristic fix suggestions. Optional sessionId defaults to most recent.
Clear all in-memory sessions before a fresh profiling run.
Heuristic jank signals from React commit timings in a recent window. If no threshold triggers, returns no-strong-react-jank-signals (jank may be non-React or below thresholds).
Per Profiler-label stats: render count, avg/max/total duration, slow render count, phases. Optional sessionId defaults to most recent.
Raw profiler samples for a session (id, phase, durations, times). Optional sessionId defaults to most recently updated session.
Renders with actualDuration above thresholdMs (default 16). Optional sessionId defaults to most recent.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Descriptions mention 'returns X' but do not specify JSON schema. Blocks downstream tool chaining and forces LLMs to guess field names.
Parameter descriptions lack constraints and ranges. 'limit' and 'thresholdMs' have no min/max bounds; LLMs may pass absurd values (limit=999999, thresholdMs=-1). 'sortBy' enum is documented but others are free-form strings.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
List the most recent raw profiler samples for a session (capped).
List all profiler ingest sessions (sessionId, sample counts, timestamps). Matches IMPLEMENTATION_GUIDE.md.
Summarize render samples for a session: top Profiler labels by actualDuration, time window, and attributionNote when only one <Profiler id> is present. sessionId must match the browser header X-React-Profiler-Session (e.g. demo-next).
Suggest remediation ideas ranked by top contributors in the session.
No tool annotations (readOnlyHint, destructiveHint). 'clear_data' is destructive but unmarked; LLMs cannot distinguish safe reads from dangerous writes. Increases risk of accidental data loss.
Error handling not documented. Descriptions do not explain what happens on missing sessionId, empty data, or invalid thresholdMs. LLMs have no recovery guidance.
Descriptions are generic and lack LLM-optimized context. E.g., 'Raw profiler samples for a session' does not explain WHEN to call this vs get_component_summary or analyze_performance. Ambiguous tool selection.