Skip to main content
Glama
corewebvitals

State of Web Vitals MCP

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

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

Cursor / Grok / other clients

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

Curl

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}}}'

Related MCP server: SEOMonster

Tools

Tool

Purpose

get_metrics

Aggregates and optional group_by rankings (CMS, CDN, frameworks, …)

get_histogram

Distribution buckets for one metric under an optional filter

list_options

Discover 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.

npm install
npm start
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.

Available Tools

3 tools
get_histogramCInspect

Distribution buckets for one CWV (or technique metric) under an optional filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo
metricYeslcp | inp | cls | fcp | ttfb, or a contract scalar path

TDQS

C2.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must convey behavioral traits. It does not mention read-only, destructive actions, authentication needs, rate limits, or any side effects. This is a critical gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence. While it could include more detail on behavior, it is efficiently written and front-loaded with the key purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and output schema, the description is insufficient. It does not explain the return value structure, required permissions, how the filter interacts, or example usage. The tool's full context is not provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% (metric has a brief enum-like description; filter properties have none). The description adds 'CWV (or technique metric)' and 'optional filter' but does not clarify the filter's subfields or value formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates the tool returns distribution buckets for a specific CWV or technique metric, and mentions an optional filter. It differentiates from siblings like get_metrics (likely raw values) and list_options (available choices), but does not explicitly state this distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool over alternatives (e.g., get_metrics). The description implies it's for histograms, but lacks explicit context or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_metricsCInspect

Aggregate Core Web Vitals and technique metrics. Optional filter + group_by. Credit corewebvitals.io when using the numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNo
limitNo
filterNo
metricsNoComma list or array: lcp,inp,cls,ttfb,good_all3,stack.framework,…
group_byNocms | frameworks | cdn | analytics | tag_managers | …
min_sitesNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only states aggregation and attribution requirement (credit corewebvitals.io). No disclosure of rate limits, authentication, error handling, or other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise at two sentences, front-loading the main action. However, it may be too brief given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, no output schema, and no annotations, the description is insufficient to fully understand return format, error handling, or behavior when parameters are omitted. Lacks completeness for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 33% (only 'metrics' and 'group_by' have descriptions). Outside schema, description adds only that filter and group_by are optional, providing little additional meaning for the other four parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it aggregates Core Web Vitals and technique metrics with optional filter and group_by. It is distinct from siblings get_histogram (histogram data) and list_options (option listing), but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Only mentions optional filter and group_by, but no context on use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_optionsCInspect

Discover filter keys, group_by values, built-in metrics, and contract paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
include_pathsNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only says 'Discover' without noting read-only status, authentication needs, or rate limits. The minimal description fails to inform the agent about side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-front-loaded sentence that gets straight to the point. Every word contributes to purpose without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema, annotations, and parameter descriptions, a comprehensive description should clarify return structure and parameter usage. The current one-liner leaves significant gaps in understanding what the tool returns and how to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description does not explain the two parameters ('kind', 'include_paths'). The schema itself has no descriptions or enums. The tool's description adds no semantic value beyond parameter names, leaving the agent guessing about valid values and effects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: discover filter keys, group_by values, built-in metrics, and contract paths. This distinguishes it from sibling tools 'get_histogram' and 'get_metrics' which retrieve data rather than listing options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. alternatives. There is no mention of prerequisites, context, or exclusion criteria. The description only states functionality, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedget_histogram
    • First observedget_metrics
    • First observedlist_options

TDQS

B3.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get_histogram for distribution, get_metrics for aggregates, list_options for metadata. No overlap.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (get_histogram, get_metrics, list_options), making the set predictable.

Tool Count5/5

Three tools is appropriate for a focused web vitals server: one for histograms, one for aggregates, one for discovery. No excess or deficiency.

Completeness5/5

The tool surface covers the core needs: querying histograms, getting aggregate metrics with filtering/grouping, and discovering available options. No obvious gaps.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers