Real-user Core Web Vitals from the Chrome UX Report (CrUX) API for any origin or URL.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
MCP server for the Chrome UX Report (CrUX) API β ask for real-user Core Web Vitals (LCP, INP, CLS, plus FCP and TTFB) of any public origin or URL from Claude, Cursor, Codex and other AI clients in natural language.
The assistant assesses Core Web Vitals in one call, compares phone vs desktop, benchmarks a page against its site average and pulls up to 40 weeks of p75 history β the same field data that powers PageSpeed Insights and Google Search's CWV signals.
Get an API key β a free Google Cloud API key with the Chrome UX Report API enabled.
Add the server β for example, in Claude Code (other clients):
Ask the assistant: "Does https://web.dev pass Core Web Vitals on mobile?"
| Tool | Description |
|---|---|
get_core_web_vitals | One-call CWV assessment: p75 + good / needs-improvement / poor rating and experience densities for LCP, INP, CLS (+ FCP, TTFB), with an overall pass verdict. |
compare_form_factors | Phone vs desktop vs tablet vs all-devices breakdown with per-device traffic shares (4 API requests). |
compare_origin_vs_url | Site-wide origin record vs one specific page β is this page faster than the site average? (2 requests). |
get_cwv_trend | Weekly p75 trend over up to 40 weeks with an improved / regressed / stable delta per metric. |
query_record | Raw latest 28-day record: full histograms, percentiles and fractions. |
query_history_record | Raw weekly timeseries: histogram/percentile/fraction series per collection period. |
Full descriptions: docs/TOOLS.md. Resilience: retries with backoff on 429/5xx/network errors, request timeout, and "no data" (HTTP 404) reported as a normal structured result rather than a failure.
The server talks to the Chrome UX Report API
(chromeuxreport.googleapis.com) β Google's public dataset of real Chrome user
experiences, updated daily (history: weekly on Mondays). Auth is a plain Google
Cloud API key (no OAuth, nothing to refresh), free of charge with a quota of
150 queries per minute per project shared by both endpoints. Only origins/URLs
that are public and popular enough have data β for anything below the traffic
threshold the API answers "no data", which the tools report as no_data, not an error.
claude_desktop_config.json β macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\
~/.cursor/mcp.json (or .cursor/mcp.json in the project)
.vscode/mcp.json β note the servers key (not mcpServers)
CRUX_API_KEY.β οΈ The key is stored in plain text in your client config and rides in the request URL β treat it like a password.
| Variable | Required | Default | Description |
|---|---|---|---|
CRUX_API_KEY | yes | β | Google Cloud API key with the Chrome UX Report API enabled. |
CRUX_API_BASE | no | https://chromeuxreport.googleapis.com | API root override. |
CRUX_TIMEOUT_MS | no | 30000 | Per-request timeout, ms. |
CRUX_MAX_RETRIES | no | 3 | Retries on 429/5xx/network errors. |
npx, no separate install needed).compare_form_factors spends 4 units per call, compare_origin_vs_url 2.no_data. Data is a 28-day
rolling window updated daily (~04:00 UTC); history updates on Mondays β repeating
the same query within a day returns identical data.Questions, ideas and fixes β Telegram: @gistrec.
MIT β see LICENSE.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/google-crux-mcp)<a href="https://allmcps.com/mcp/google-crux-mcp"><img src="https://allmcps.com/api/badge/google-crux-mcp?style=directory" alt="Google CrUX MCP on AllMCPs" /></a>