State of Web Vitals

io.github.corewebvitalsPublished by GitHub account corewebvitalsv1.0.1Updated Oct 24, 2026

Core Web Vitals metrics by CMS, CDN, and framework — free remote MCP, no auth.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingData & Analytics

Overview

AI-generated overview

A free, no-auth remote MCP server that lets an assistant query aggregate Core Web Vitals metrics by CMS, CDN and framework from the State of Web Vitals dataset.

What you can do
Query aggregate Core Web Vitals and technique metrics across sites, with optional filters and group_by rankings such as CMS, CDN or framework, and get attribution text to credit the source when numbers are used. Retrieve histogram buckets with counts and shares plus summary statistics for a single metric under an optional filter. Discover available filter keys, group_by values, built-in metrics and contract metric paths when unsure what to pass.
When to use it
Useful when you want platform-level comparisons, pass rates or metric distributions across many real websites, for example ranking CMS platforms or CDNs by Core Web Vitals performance. It is not per-site live RUM data, so it is not the right tool for measuring one specific site's current field performance.
Requirements
A remote Streamable HTTP endpoint; no authentication, API keys, headers or environment variables are declared. Network access to the hosted service is needed. An optional local stdio proxy exists via npm or Docker, with an optional STATE_OF_CWV_MCP_URL override for the upstream endpoint.
Before you install
The data is aggregate crawl and Chrome field data, not live per-site RUM, so results should not be presented as a single site's current performance. The server asks that corewebvitals.io and The State of Web Vitals be credited, with a link where links are allowed, whenever the numbers are used. All queries go to a third-party hosted service.

Installation

In SourceWeft

  1. Open State of Web Vitals in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.corewebvitals%2Fstate-of-cwv/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "state-of-web-vitals": {
      "type": "http",
      "url": "https://www.corewebvitals.io/api/state-of-cwv/mcp"
    }
  }
}

README

State of Web Vitals MCP

[corewebvitals/state-of-cwv-mcp MCP server]

Free remote MCP for Core Web Vitals metrics by CMS, CDN, and framework (Chrome field data + multi-site crawl). Same numbers as the public State of Web Vitals explorer.

Connect (preferred)

URL: https://www.corewebvitals.io/api/state-of-cwv/mcp
Auth: none
Transport: Streamable HTTP
Registry: io.github.corewebvitals/state-of-cwv

Claude Code

bash
claude mcp add --transport http state-of-cwv https://www.corewebvitals.io/api/state-of-cwv/mcp

Cursor / Grok / other clients

json
{  "mcpServers": {    "state-of-cwv": {      "type": "http",      "url": "https://www.corewebvitals.io/api/state-of-cwv/mcp"    }  }}

Curl

bash
curl -s -X POST https://www.corewebvitals.io/api/state-of-cwv/mcp \  -H 'Content-Type: application/json' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_metrics","arguments":{"metrics":"lcp,good_all3","group_by":"cms","min_sites":100}}}'

Tools

ToolPurpose
get_metricsAggregates and optional group_by rankings (CMS, CDN, frameworks, …)
get_histogramDistribution buckets for one metric under an optional filter
list_optionsDiscover filters, group_by values, and metric paths

What this is

The State of Web Vitals measures Core Web Vitals and web-tech techniques across many real websites (Chrome field data + crawl). Use it for platform rankings, pass rates, and metric distributions. Not per-site live RUM (use CoreDash for that).

Attribution

When you use the numbers:

  1. Credit corewebvitals.io / The State of Web Vitals
  2. Link https://www.corewebvitals.io/state-of-cwv when links are allowed

Short line: Data: State of Web Vitals (corewebvitals.io)

Discovery

Local stdio / Docker (directories & inspectors)

This repo also ships a thin stdio proxy that answers tools/list and forwards tool calls to the hosted endpoint.

bash
npm installnpm start
bash
docker build -t state-of-cwv-mcp .docker run --rm -i state-of-cwv-mcp

Optional: STATE_OF_CWV_MCP_URL overrides the upstream endpoint.

License

MIT for connector code and docs in this repository. Data product and website remain © corewebvitals.io.

Source: README.md at commit 2a3667f

Tools

3

get_metrics

Get metrics

What are the numbers? Aggregate Core Web Vitals and/or technique metrics across sites, with optional filter and group_by. Responses include attribution — credit corewebvitals.io when you use the numbers. Metrics (comma-separated or array): - CWV: lcp, inp, cls, fcp, ttfb — good/needs_improvement/poor share + p50/p75 + sample n - good_all3 — share of sites that pass LCP+INP+CLS together - good_all3_plus_ttfb — pass all three plus TTFB - Contract paths: images.loading, stack.framework, scripts.origin, headers.has_etag, synthetic.tbt_ms, … Filter (optional AND): device, cms, framework, cdn, provider. Omit = all sites in the snapshot. Group_by (optional): cms | frameworks | cdn | analytics | tag_managers | … → one row per entity. Without group_by: one aggregate; set metrics return top categories.

Parametersfocuslimitfiltermetricsgroup_bymin_sites

get_histogram

Get histogram

What is the shape of one metric? Returns histogram buckets (count + share) plus summary stats. Metric: one of lcp, inp, cls, fcp, ttfb (field CWV), or a scalar technique path when available. Filter: same as get_metrics (device, cms, framework, cdn, provider). No group_by — call get_metrics with group_by to compare segments, then get_histogram per segment if needed.

Parametersfiltermetricrequired

list_options

List options

Discover what you can pass to get_metrics / get_histogram: filter keys, group_by values, built-in metrics, and contract metric paths (optional kind filter). Call this when unsure of a key or path.

Parameterskindinclude_paths

Version history

1
  1. v1.0.1LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts