---
title: "PageSpeed Insights MCP: Core Web Vitals Audit · GSC PAP"
source: https://gscpap.com/guides/audit-core-web-vitals-with-ai
updated: 2026-09-18
---

[All guides](https://gscpap.com/guides)

Guide · about 7 minutes

# Audit Core Web Vitals across your site with AI

By the [GSC PAP team](https://gscpap.com/about) · Updated September 18, 2026

A Core Web Vitals audit answers two questions: which of your important pages fall short of Google's thresholds for real visitors, and what to fix first. PageSpeed Insights gives you the numbers one URL at a time. The work is running it across the pages that get search traffic and ranking the fixes.

GSC PAP is a hosted MCP server with two PageSpeed Insights tools: `pagespeed_insights` for the Lighthouse lab run and `pagespeed_field_data` for CrUX field metrics at the 75th percentile. They share a 24-hour cache, so calling both for the same URL costs one PageSpeed request.

This guide covers lab versus field data and the thresholds first, then walks a multi-URL audit prompt that reads your top Search Console pages, runs PSI on each, and produces an action-ranked report.

## Lab data vs field data: which Core Web Vitals numbers matter?

PageSpeed Insights reports two kinds of numbers for every URL. Lab data comes from one Lighthouse run on Google's servers with a simulated device and network. It is repeatable enough to catch regressions and debug a slow page, but it is a single visit, and the score moves from run to run.

Field data comes from the Chrome User Experience Report (CrUX): what real Chrome users experienced on that page over the last 28 days, reported at the 75th percentile. That is what your visitors actually get, so when lab and field disagree, trust the field numbers and use the lab run to find the cause.

Two practical differences. Interaction to Next Paint (INP) needs real user interactions, so a lab run cannot measure it; Lighthouse reports Total Blocking Time (TBT) instead, which web.dev treats as a lab proxy for INP, not a substitute. And low-traffic URLs often have no URL-level field data because CrUX lacks enough samples. In that case `pagespeed_field_data` also returns origin-level data for your whole domain when CrUX has it.

[![PageSpeed Insights report with field data from real users above the lab scores](https://gscpap.com/images/guides/audit-core-web-vitals-with-ai.webp)](https://gscpap.com/images/guides/audit-core-web-vitals-with-ai.webp)

PageSpeed Insights puts field data from real Chrome users (1) above the lab run (2). When they disagree, the field numbers are what your visitors get. Recreated with example data for a made-up site.

## What are the Core Web Vitals thresholds?

Google's thresholds, as published on web.dev, are measured at the 75th percentile of page loads, separately for mobile and desktop. A page passes when all three metrics are in the good range. Anything between good and poor is rated needs improvement.

Core Web Vitals thresholds, at the 75th percentile

| Metric | Good | Needs improvement | Poor |
| --- | --- | --- | --- |
| LCP (Largest Contentful Paint, loading) | 2.5 s or less | 2.5 s to 4 s | Above 4 s |
| INP (Interaction to Next Paint, responsiveness) | 200 ms or less | 200 ms to 500 ms | Above 500 ms |
| CLS (Cumulative Layout Shift, visual stability) | 0.1 or less | 0.1 to 0.25 | Above 0.25 |

Source: web.dev. A page passes when all three are good, measured separately on mobile and desktop. Bars are not to scale.

-   Largest Contentful Paint (LCP), loading: good at 2.5 seconds or less, poor above 4 seconds.
-   Interaction to Next Paint (INP), responsiveness: good at 200 milliseconds or less, poor above 500 milliseconds.
-   Cumulative Layout Shift (CLS), visual stability: good at 0.1 or less, poor above 0.25.

## Running a Core Web Vitals audit with Claude

The prompt works in any client connected to GSC PAP. Not set up in Claude yet? [Connect GSC PAP to Claude](https://gscpap.com/integrations/claude-ai-connectors)

### The scenario

Google recommends good Core Web Vitals for success in Search and says they align with what its core ranking systems seek to reward. Running PageSpeed Insights by hand on every important URL is slow, and a single run is a shaky basis for decisions because lab scores vary between runs. You want one chat where the AI runs PSI on your top pages, shows lab and field data side by side, and prioritizes fixes by potential time savings.

### The prompt

```prompt
Use the gsc-pap MCP. For https://example.com, get my top 10 organic-traffic pages from the last 28 days via Search Console. For each one run pagespeed_insights mobile + pagespeed_field_data mobile. Build a table: page_path, perf_score, LCP_lab, LCP_field_p75, INP_field_p75, CLS_field_p75, and the #1 PSI opportunity by ms savings. Sort by perf_score asc so my worst-performing high-traffic pages bubble to the top.
```

### What happens

1.  #### AI fetches the top 10 organic-traffic pages
    
    Claude calls `search_analytics_query` with dimension `page` for the last 28 days, takes the top 10 by clicks. This is your prioritization set: fixing CWV on a page nobody visits is wasted effort.
    
2.  #### AI loops PSI calls (parallel-safe)
    
    For each page the AI calls `pagespeed_insights(url, mobile)` and `pagespeed_field_data(url, mobile)`. Both share GSC PAP's PSI cache so this is at most one Google PSI hit per (url, mobile) pair per 24h.
    
3.  #### AI builds the report and surfaces fixes
    
    Output is a sortable table with both lab and field metrics + the highest-impact opportunity per page. The AI also highlights pages where lab and field disagree (lab says fast, field says slow → environment-specific issue) or where field data is missing (low-traffic URL with no CrUX samples → fall back to lab and origin-level field data).
    

### Outcome

The pages to fix first are the ones with high organic traffic whose field LCP, INP or CLS sits outside the good range, even when their lab score looks fine. Those are the problems real visitors hit, on the pages Search sends them to. Field data covers a rolling 28-day window, so after you ship a fix, expect the field numbers to improve gradually over the following weeks rather than overnight.

### Where to take it next

-   Re-run weekly to catch regressions from new deploys.
-   Pair with `correlate_gsc_to_ga4` to weight CWV fixes by actual revenue impact.
-   For URL templates (e.g. blog posts or product pages) sample 3-5 representative URLs rather than auditing every one.

## Frequently asked questions

### Is there a PageSpeed Insights MCP server?

Yes. GSC PAP is a hosted MCP server that includes pagespeed_insights (a Lighthouse lab run) and pagespeed_field_data (CrUX real-user metrics), next to its Search Console and GA4 tools. You connect it by signing in with Google and pasting one bearer token into Claude, Cursor or Claude Code. There is no Google Cloud project to set up.

### Can Claude audit Core Web Vitals for my whole site?

It can work through a list of URLs, such as your top pages from Search Console, and call the PageSpeed tools for each one. Each URL costs one or two tool calls, and GSC PAP allows 60 tool calls per minute and 1,000 per hour per user. For large sites, audit the pages with the most traffic and sample a few URLs per template instead of every page.

### Why does my page have no Core Web Vitals field data?

CrUX only reports a URL when enough real Chrome users loaded it during the last 28 days. When URL-level data is missing, pagespeed_field_data still returns origin-level data for your whole domain if CrUX has it, and the pagespeed_insights lab run can still point to page-specific problems. The URL also has to be public: PageSpeed Insights cannot reach localhost or staging URLs that Google's servers cannot load.

## Other guides

[All guides](https://gscpap.com/guides)

[

### AI queries in Google Search Console: how to tell people, AI Mode and agents apart

Search Console mixes AI Mode follow-ups, AI agent searches and scripts into your query report. How to spot each one, with regex filters and real data.

14 min read

](https://gscpap.com/guides/ai-queries-in-google-search-console)[

### Good position, no clicks: find the SERP features eating your CTR

Ranking third and getting no clicks usually means something sits above you: an AI Overview, a featured snippet or a map pack. How to check which, query by query.

7 min read

](https://gscpap.com/guides/low-ctr-at-good-position-serp-features)[

### Find the pages quietly losing organic traffic, before the rankings go

Content decay is slow enough to miss on a dashboard. How to find the pages whose clicks keep sliding, tell decay from seasonality, and decide what to refresh.

7 min read

](https://gscpap.com/guides/find-pages-losing-organic-traffic)[

### Traffic changed: how to compare two Search Console periods and find out why

Clicks are down 18% and nobody knows why. How to compare two periods properly, avoid the three traps that fake a drop, and find the queries and pages behind it.

7 min read

](https://gscpap.com/guides/compare-search-console-date-ranges)[

### Google Search Console anonymized queries: measure the traffic you can't see

Search Console hides anonymized queries from query rows but counts them in totals. Learn what they are, why no tool reveals them, and how to measure them.

6 min read

](https://gscpap.com/guides/google-search-console-anonymized-queries)[

### GSC clicks vs GA4 sessions: why they differ and how to tie clicks to conversions

A Search Console click and a GA4 session measure different things. Why the numbers never match, what gap is normal, and how to compare and combine them page by page.

11 min read

](https://gscpap.com/guides/correlate-organic-clicks-to-ga4-conversions)[

### Google Search Console historical data: how to keep it past 16 months

Google Search Console keeps 16 months of historical data, then deletes it. Here is what it includes and how to keep it longer, from BigQuery to an archive.

8 min read

](https://gscpap.com/guides/recover-search-console-history-past-16-months)[

### Build a weekly SEO health report with Claude

Automate a weekly SEO report with Claude: one saved prompt pulls Search Console changes, quick wins, decaying pages, GA4 conversions and Core Web Vitals.

8 min read

](https://gscpap.com/guides/weekly-seo-health-report-via-claude)[

### Bulk URL inspection in Google Search Console: diagnose indexing issues at scale

Search Console inspects one URL at a time. The URL Inspection API allows 2,000 checks a day per property. How to inspect in bulk and find indexing issues.

8 min read

](https://gscpap.com/guides/diagnose-indexing-issues-bulk-url-inspection)[

### Track keyword rankings in Google Search Console, past the 16-month limit

See a keyword's position history in Google Search Console, what that average really measures, and how to keep ranking history past the 16-month limit.

6 min read

](https://gscpap.com/guides/track-keyword-rankings-over-years)[

### How to find striking distance keywords in Google Search Console

Striking distance keywords rank just off page one of Google. Find them in Search Console, pick the ones worth fixing, and learn what to change on the page.

8 min read

](https://gscpap.com/guides/find-seo-quick-wins)[

### How to find keyword cannibalization in Google Search Console

Check for keyword cannibalization in Google Search Console: find queries where your pages compete, judge whether it hurts, and fix the cases that do.

8 min read

](https://gscpap.com/guides/detect-keyword-cannibalization)

### Tools that automate this workflow

The MCP exposes 36 tools across 9 categories. These are the ones most relevant to this page:

-   [pagespeed_insights](https://gscpap.com/tools#pagespeed_insights) · Run a Google PageSpeed Insights (Lighthouse) audit. Returns performance / accessibility / best-practices / SEO scores, Core Web Vitals lab values (LCP, FCP, CLS, TBT), and the top opportunities ranked by potential savings.
-   [pagespeed_field_data](https://gscpap.com/tools#pagespeed_field_data) · Pull real-user Core Web Vitals from the Chrome User Experience Report (CrUX). LCP, INP, CLS at the 75th percentile, plus FAST/AVERAGE/SLOW rating, for both URL and origin level.
-   [search_analytics_query](https://gscpap.com/tools#search_analytics_query) · Run any Search Analytics query with full dimension and filter support, identical to what you'd hit the GSC API for, but inline in chat.
-   [get_performance_overview](https://gscpap.com/tools#get_performance_overview) · High-level performance snapshot for a site: clicks, impressions, CTR, position over the last N days.

[Browse all 36 tools](https://gscpap.com/tools)

### Skip the GCP project. Just sign in.

GSC PAP is hosted, free, and read-only. No service account JSON, no Python venv, no API keys. Sign in with Google, mint a bearer token, paste it into Claude / Cursor / Claude Code. About 60 seconds end to end.

[Sign in with Google](https://app.gscpap.com/login) Read-only Search Console scope, revoke anytime

Want a guide for a workflow we have not covered? Email [support@gscpap.com](mailto:support@gscpap.com).
