Core Web Vitals MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CRUX_API_KEY | No | Alternative Google API Key for CrUX API | |
| DO_NOT_TRACK | No | Set to 1 to opt out of telemetry | |
| GOOGLE_API_KEY | No | Google API Key for Chrome UX Report (CrUX) and PageSpeed Insights APIs | |
| DISABLE_TELEMETRY | No | Set to 1 to disable telemetry | |
| MCP_TELEMETRY_OPT_OUT | No | Set to 1 to opt out of telemetry | |
| CORE_WEB_VITALS_TELEMETRY | No | Set to false to disable telemetry |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. |
| 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'). form_factor: Optional device filter ('ALL_FORM_FACTORS', 'PHONE', 'DESKTOP', 'TABLET'). api_key: Optional Google API Key. If omitted, checks GOOGLE_API_KEY or CRUX_API_KEY environment variables. |
| 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. |
| doctorB | Validate Google Cloud API credentials, test endpoint reachability, and check test beds. Args: api_key: Optional Google API Key to test directly. |
| skills_listA | List available Core Web Vitals diagnostic and remediation playbooks (LCP, INP, CLS). |
| 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. |
| check_for_updatesC | Check PyPI for the latest version of core-web-vitals-mcp. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
The core analysis tools are clearly separated by data source and shape: lab vs. field (audit_pagespeed vs. get_crux_metrics) and snapshot vs. timeseries (get_crux_metrics vs. get_crux_history). The two CrUX tools share a prefix and domain, which could cause a mild misselection, but descriptions make the distinction explicit. The remaining operational tools (doctor, check_for_updates) are unambiguous.
Most tools follow verb_noun (get_crux_history, get_crux_metrics, audit_pagespeed, check_for_updates), but skill_read and skills_list invert to noun_verb and 'doctor' is a bare noun with no action verb. The pattern is readable but not uniform, so an agent cannot reliably predict a name from an intended action.
Seven tools is a well-scoped size for a Core Web Vitals server, and no tool is redundant. Two of the seven (doctor, check_for_updates) serve the package itself rather than CWV analysis, which makes the analytical surface slightly thinner than the count suggests.
Coverage spans both major data planes (CrUX field metrics snapshot plus history timeseries) and lab diagnostics, with playbooks for remediation guidance and a credential/connectivity check. Gaps are minor: no batch or multi-URL comparison, no explicit mapping between audit opportunities and the referenced skills, and no export of raw percentile data beyond what the two CrUX tools return.