Skip to main content
Glama
surendranb

Core Web Vitals MCP Server

by surendranb

Core Web Vitals MCP Server (core-web-vitals-mcp)

FastMCP server exposing Google Chrome User Experience Report (CrUX) and PageSpeed Insights APIs for real-user Core Web Vitals (LCP, INP, CLS), 28-day field history trends, and Lighthouse lab performance audits.

The definitive Core Web Vitals diagnostics engine for AI coding agents (Claude, Cursor, Copilot, Antigravity).


1. Quickstart

Run directly without installing via uvx (Python) or npx (Node):

Via Python (uvx)

uvx core-web-vitals-mcp

Via Node (npx)

npx -y core-web-vitals-tools-mcp

Related MCP server: PageSpeed MCP Server

2. MCP Client Configuration

Add to your MCP client config (claude_desktop_config.json, cursor.json, or Antigravity):

{
  "mcpServers": {
    "core-web-vitals": {
      "command": "uvx",
      "args": ["core-web-vitals-mcp"],
      "env": {
        "GOOGLE_API_KEY": "your_google_api_key_here"
      }
    }
  }
}

Or using npx:

{
  "mcpServers": {
    "core-web-vitals": {
      "command": "npx",
      "args": ["-y", "core-web-vitals-tools-mcp"],
      "env": {
        "GOOGLE_API_KEY": "your_google_api_key_here"
      }
    }
  }
}

3. Google API Authentication

While PageSpeed Insights can execute lab audits under limited public quota, Chrome UX Report (CrUX) queries require an authorized Google API Key:

  1. Open the Google Cloud Console.

  2. Select your project or create a new one.

  3. Navigate to APIs & Services -> Library and enable:

    • Chrome UX Report API

    • PageSpeed Insights API

  4. Navigate to APIs & Services -> Credentials -> Create Credentials -> API key.

  5. Set the environment variable:

    export GOOGLE_API_KEY="AIzaSy..."
    # or
    export CRUX_API_KEY="AIzaSy..."

4. Tools

Tool

Parameters

Description

get_crux_metrics

url, form_factor="ALL_FORM_FACTORS", api_key

Query Google CrUX API for real-user field metrics: LCP, INP, CLS, FCP, TTFB, and overall Core Web Vitals assessment (PASSED / FAILED).

get_crux_history

url_or_origin, api_key

Query Google CrUX History API for 28-day historical field metric trends across 25+ weekly collection periods.

audit_pagespeed

url, strategy="mobile", api_key

Run Google PageSpeed Insights lab audit for Lighthouse performance score (0-100), Speed Index, TBT, LCP, and top savings opportunities.

doctor

api_key

Diagnostic utility verifying Google API key configuration, testing endpoint connectivity, and verifying test bed readiness.

skills_list

(none)

Lists dynamic Core Web Vitals diagnostic and remediation playbooks.

skill_read

name

Fetches operational engineering playbooks: lcp-optimization, inp-debugging, or cls-remediation.

check_for_updates

force=False

Queries PyPI for newer versions and upgrade commands.


5. Playbook Skills

The server dynamically dissociates actionable engineering playbooks from the core runtime:

  • lcp-optimization: 4-phase breakdown (TTFB, Load Delay, Load Duration, Render Delay), image format conversion, preloading, and render blocking mitigation.

  • inp-debugging: Interactive latency breakdown (Input Delay, Processing, Presentation Delay), task chunking with scheduler.yield(), and long task mitigation.

  • cls-remediation: Aspect-ratio reservation, fallback font metric overrides (size-adjust), and layout stability patterns.


6. Telemetry & Privacy

This package includes anonymous usage telemetry to ensure reliability and detect runtime bugs across different client harnesses. Telemetry adheres strictly to Schema v2:

  • Opt-Out: Strictly respects DO_NOT_TRACK=1, DISABLE_TELEMETRY=1, MCP_TELEMETRY_OPT_OUT=1, or CORE_WEB_VITALS_TELEMETRY=false.

  • Zero PII: No user URLs, personal identifiers, or authentication keys are ever captured.

Available Tools

7 tools
audit_pagespeedB

Run a Google PageSpeed Insights lab audit for synthetic Lighthouse performance scores and diagnostics.

Returns overall performance score (0-100), Speed Index, Total Blocking Time (TBT), Largest Contentful Paint (LCP), and prioritized remediation opportunities.

Args: url: URL of the web page to audit (e.g. 'https://surendranb.com'). strategy: Analysis strategy ('mobile' or 'desktop'). Defaults to 'mobile'. api_key: Optional Google API Key. If omitted, checks GOOGLE_API_KEY or PAGESPEED_API_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
api_keyNo
strategyNomobile

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the API-key fallback chain (GOOGLE_API_KEY or PAGESPEED_API_KEY) and the shape of the result, but says nothing about runtime behavior such as audit latency, quota/rate limits, or failure modes when a page is unreachable.

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 opening sentence states the core action, the second lists outputs, and the Args block is compact and scannable. It is slightly padded by enumerating return metrics even though an output schema exists, but nothing is wasted or buried.

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

Completeness4/5

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

For a three-parameter read-style tool with an output schema, the definition covers purpose, all inputs, and credential handling, so an agent can invoke it correctly. What is missing is decision context relative to the sibling CrUX tools and any note on expected latency or error behavior.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry all parameter meaning, and it largely does: url is documented with a concrete example, strategy lists both accepted values with its default, and api_key explains the optional env-var fallback. The only gap is that the schema has no enum enforcing 'mobile'/'desktop' and the description does not say what happens on an invalid value.

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 opens with a specific verb+resource ("Run a Google PageSpeed Insights lab audit") and scopes it as synthetic Lighthouse data with named metrics, which is enough for an agent to know what it produces. It never names the sibling tools (get_crux_metrics, get_crux_history), so the lab-vs-field distinction is only implied, not stated.

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?

There is no when-to-use or when-not-to-use guidance, and no routing hint toward or away from the CrUX siblings. The word "synthetic" hints that this differs from real-user field data, but the description never tells an agent which to pick for which question.

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

check_for_updatesC

Check PyPI for the latest version of core-web-vitals-mcp.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says the tool checks PyPI, implying a read-only network operation, but does not disclose caching, side effects, failure behavior, or what 'force' changes.

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, front-loaded sentence with no filler or redundant information. Every word contributes to conveying the tool's exact purpose.

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

Completeness3/5

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

The tool is simple and the output schema exists, so return details need not be in the description. However, the description omits any explanation of the 'force' parameter and provides no usage context, leaving meaningful gaps.

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% for the single 'force' parameter, and the description does not mention or explain it at all. The description therefore fails to compensate for the undocumented parameter.

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 states a specific verb (Check) and resource (PyPI latest version of core-web-vitals-mcp), so an agent can immediately understand the tool's purpose. It does not, however, explicitly differentiate itself from any sibling tool.

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?

There is no guidance on when to use this tool, when not to use it, or which alternatives exist. The purpose implies a context, but usage is left entirely to inference.

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

doctorB

Validate Google Cloud API credentials, test endpoint reachability, and check test beds.

Args: api_key: Optional Google API Key to test directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that network endpoint testing occurs and that credentials are validated, which hints at the operation's nature, but it never states whether the tool is read-only, whether it makes live external calls, or what side effects (if any) it has. A diagnostic tool with zero annotation coverage deserves more safety profile context.

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 brief and front-loads the three core actions before the Args section. The Python-style 'Args:' block is slightly awkward but compact, and no sentence is wasted.

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

Completeness3/5

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

An output schema exists, so return values needn't be explained. However, for a credential/diagnostic tool with no annotations, the description leaves key operational questions unanswered: whether it is safe/read-only, and what happens when api_key is null.

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

Parameters3/5

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

Schema description coverage is 0% and there is one parameter, so the description must compensate. The Args note does clarify that api_key is optional and is used to 'test directly', adding real meaning over the bare schema — but it doesn't explain the default behavior when the key is omitted (which credentials are tested instead).

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 names three concrete diagnostic actions — validating Google Cloud API credentials, testing endpoint reachability, and checking test beds — which is far more informative than the opaque name 'doctor'. Siblings (Crux metrics, PageSpeed, skills) are unrelated, so no sibling differentiation is required, but 'check test beds' is vague about what a test bed actually is.

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?

There is no guidance on when to run this diagnostic versus other tools, what triggers it, or what prerequisites exist (e.g. which ambient credentials are used when api_key is omitted). The description only states what it does, leaving the agent to infer that this is a troubleshooting tool.

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

get_crux_historyA

Query Google Chrome UX Report History API for 28-day historical field metric trends.

Provides timeseries percentiles for LCP, INP, CLS, FCP, and TTFB across 25+ weekly collection periods.

Args: url_or_origin: Web page URL or origin domain (e.g. 'https://surendranb.com'). api_key: Optional Google API Key. If omitted, checks GOOGLE_API_KEY or CRUX_API_KEY environment variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNo
url_or_originYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose useful behavior — 28-day window, 25+ weekly collection periods, the exact metric set returned, and the API-key fallback chain (GOOGLE_API_KEY / CRUX_API_KEY) — but says nothing about quotas, rate limits, error/empty-data behavior, or when history is unavailable for a low-traffic origin.

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?

Front-loaded with the API and scope in the first sentence, followed by the return shape, then a compact Args block. No filler, though the Args list slightly restates parameter names already visible in the schema.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and both parameters are covered including the auth fallback. The remaining gap is deciding between this and get_crux_metrics plus operational caveats like rate limits or missing-data cases.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: it explains url_or_origin accepts either a full page URL or an origin domain with an example, and clarifies that api_key is optional by describing the environment-variable fallback. It stops short of format/filtering details for url_or_origin (e.g., protocol requirements).

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?

States a specific verb (Query) and resource (Chrome UX Report History API) and scopes it to 28-day historical field metric trends with named metrics (LCP, INP, CLS, FCP, TTFB). This implicitly separates it from the get_crux_metrics sibling, but it never explicitly contrasts the two, so an agent must infer which one returns snapshots vs. history.

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

Usage Guidelines3/5

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

Usage is only implied: 'historical field metric trends' suggests reaching for this when a timeseries is wanted rather than a single snapshot, but there is no explicit when-to-use, when-not-to-use, or named alternative (get_crux_metrics) to route between them. No prerequisites (e.g., that a URL/origin must have sufficient CrUX traffic) are given.

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

get_crux_metricsA

Query Google Chrome User Experience Report (CrUX) API for real-user field metrics.

Returns 75th percentile ratings for LCP, INP, CLS, FCP, TTFB, and overall Core Web Vitals assessment.

Args: url: Page URL (e.g. 'https://surendranb.com/blog/article') or root origin ('https://surendranb.com'). form_factor: Device form factor filter ('ALL_FORM_FACTORS', 'PHONE', 'DESKTOP', 'TABLET'). Defaults to ALL_FORM_FACTORS. api_key: Optional Google API Key. If omitted, checks GOOGLE_API_KEY or CRUX_API_KEY environment variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
api_keyNo
form_factorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that api_key falls back to GOOGLE_API_KEY/CRUX_API_KEY environment variables and that results are 75th-percentile field ratings, but it omits failure modes (URLs with insufficient real-user data), rate limits, and confirmation that the call is a non-mutating read.

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?

Front-loads the purpose and return values, then a clean Args block with one line per parameter. No filler sentences; only minor verbosity in restating the metric list in two places.

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

Completeness4/5

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

An output schema exists, so return-value detail is a bonus rather than a requirement. Required and optional parameters are fully covered, and the only real gap for an agent calling this correctly is undocumented error behavior for low-traffic URLs.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all three parameters with a concrete URL example, root-origin vs page-path semantics, the accepted form_factor values ('ALL_FORM_FACTORS', 'PHONE', 'DESKTOP', 'TABLET' – none of which are enums in the schema), the default, and api_key resolution order.

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?

States a specific verb and resource: queries the CrUX API for real-user field metrics, and enumerates the exact metrics returned (LCP, INP, CLS, FCP, TTFB, overall CWV assessment). An agent knows precisely what this produces, though it never names or contrasts itself with the sibling get_crux_history.

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

Usage Guidelines3/5

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

Usage is only implied by the phrase 'real-user field metrics' – an agent can infer this is the tool for current CrUX data, but the description never states when to prefer it over get_crux_history or audit_pagespeed, nor any prerequisite (e.g. URL must have sufficient traffic for CrUX data).

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

skill_readA

Read a specialized Core Web Vitals optimization playbook (e.g. 'lcp-optimization', 'inp-debugging', 'cls-remediation').

Args: name: Name of the skill to read. Call skills_list to view available playbooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Read' and 'playbook' imply a non-destructive lookup, and the examples hint at content type, but there is no statement about what happens on an invalid name, whether content is static/cached, or any permission requirements.

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?

Purpose and examples are front-loaded in one sentence, and the argument note is brief. The 'Args:' block largely restates the schema parameter name, which is minor boilerplate rather than genuine waste.

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

Completeness4/5

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

For a single-parameter read tool with an output schema already covering the return payload, the description supplies the essentials: what is read, examples of valid inputs, and where to discover names. Only the invalid-input behavior is unaddressed.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'name' parameter, so the description must compensate. It does add value by supplying three concrete valid example values and pointing to skills_list for the full set, but it gives no format rules (casing, hyphenation, prefixing).

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?

States a specific verb (Read) and resource (Core Web Vitals optimization playbook) and grounds it with concrete playbook identifiers ('lcp-optimization', 'inp-debugging', 'cls-remediation'). It is clearly distinguished from siblings like get_crux_metrics and audit_pagespeed, which gather data rather than return written guidance.

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

Usage Guidelines4/5

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

It explicitly routes the agent to skills_list to discover valid names, which is the key prerequisite for invocation. However, it never states the trigger condition (e.g., 'use before attempting CWV optimization' or 'when audit_pagespeed reports a failing metric'), leaving when-to-use implicit.

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

skills_listA

List available Core Web Vitals diagnostic and remediation playbooks (LCP, INP, CLS).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the content domain (Core Web Vitals playbooks covering LCP, INP, CLS), which is useful, but says nothing about read-only safety, whether the list is static or versioned, or how results are ordered.

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?

A single front-loaded sentence that identifies the verb, the resource, the domain, and the covered metrics with zero wasted words.

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

Completeness4/5

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

For a zero-parameter list tool with an output schema, the description supplies enough to call it correctly and know what domain it returns. It could be marginally stronger by noting that skill_read is the follow-up for fetching a specific playbook.

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

Parameters4/5

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

The tool takes zero parameters and schema description coverage is 100%, so there are no parameter semantics to explain. Baseline 4 applies.

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?

States a specific verb ('List') and resource ('playbooks') scoped to Core Web Vitals diagnostics and remediation, with concrete examples (LCP, INP, CLS). The distinction from the sibling skill_read is implied by the list/read pairing but never made explicit in the text.

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 when-to-use guidance, no prerequisites, and no mention of the obvious alternative skill_read for retrieving a specific playbook. The discovery intent is only faintly implied by the verb 'List'.

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. 7 tool updatesv0.1.0
    • First observedaudit_pagespeed
    • First observedcheck_for_updates
    • First observeddoctor
    • First observedget_crux_history
    • First observedget_crux_metrics
    • First observedskill_read
    • First observedskills_list

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct purpose: field metrics vs. historical trends vs. lab audit vs. credential diagnostics vs. playbook browsing vs. version checking. get_crux_metrics and get_crux_history are clearly separated by snapshot vs. time-series intent. skills_list and skill_read are cleanly distinguished by listing vs. reading.

Naming Consistency3/5

Conventions are mixed: get_crux_metrics/get_crux_history use verb_noun, audit_pagespeed uses a different verb, skills_list/skill_read reverse to noun_verb (and inconsistently pluralize), while 'doctor' and 'check_for_updates' follow yet other patterns. Still readable, but no single predictable scheme.

Tool Count5/5

Seven tools is well-scoped for a focused Core Web Vitals analysis server, with core analysis (CrUX current/history, PageSpeed), guidance (skills), and utilities (doctor, update check). No bloat or conspicuous omission.

Completeness4/5

Covers the domain well: real-user field data, historical trends, and synthetic lab audits plus remediation playbooks. Minor gaps include no batch/multi-URL comparison and no direct competitor/origin-vs-page aggregation, but core workflows are addressed.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI models to perform Google Lighthouse website performance analysis, including Core Web Vitals, accessibility, SEO audits, and actionable optimization recommendations. Provides comprehensive web performance insights through natural language interactions.
    1,203 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform comprehensive web performance analysis using Google's PageSpeed Insights API, including metrics, best practices, SEO, and accessibility audits.
    21 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Connects LLMs to Google PageSpeed Insights to analyze web performance, accessibility, SEO, and best practices, enabling AI assistants to audit and improve any web page.
    10
    MIT