Skip to main content
Glama

LightScout MCP

npm version license node

Part of the TestScout MCP Suite — AI-powered QA tools for modern development teams.

Core Web Vitals analysis powered by Lighthouse. Runs as an MCP server for AI coding tools (Claude Code, Cursor, Windsurf, etc.) or as a standalone CLI for CI pipelines and terminals. Four tools: analyze a URL, compare two URLs, check against thresholds, or crawl an entire site.

Requirements

  • Node.js >= 18

  • Google Chrome or Chromium

Related MCP server: Lighthouse MCP

MCP Server Setup

Claude Code

claude mcp add lightscout -- npx -y lightscout-mcp

Cursor, VS Code, Windsurf, Cline, Roo Code, Gemini CLI

All use the same mcpServers JSON format. Add this to the appropriate config file:

{
  "mcpServers": {
    "lightscout": {
      "command": "npx",
      "args": ["-y", "lightscout-mcp"]
    }
  }
}

Client

Config file

Cursor

~/.cursor/mcp.json

VS Code (Copilot)

.vscode/mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json

Cline

Settings > MCP > Edit Config

Roo Code

.roo/mcp.json

Gemini CLI

~/.gemini/settings.json

Zed

Zed uses context_servers instead of mcpServers:

{
  "context_servers": {
    "lightscout": {
      "command": "npx",
      "args": ["-y", "lightscout-mcp"]
    }
  }
}

CLI

Install

npm install -g lightscout-mcp

Try without installing

npx -p lightscout-mcp lightscout analyze https://example.com

Commands

lightscout analyze <url> [--device mobile|desktop] [--categories perf,a11y,seo,best-practices]
lightscout compare <urlA> [urlB] [--device mobile|desktop]
lightscout crawl <url> [--max-pages N] [--device mobile|desktop]
lightscout check <url> [--perf 90] [--lcp 2500] [--fcp 3000] [--cls 0.1] [--tbt 300] [--ttfb 1800]

Examples

Analyze a single page:

lightscout analyze https://example.com
lightscout analyze https://example.com --device desktop --categories performance,accessibility

Compare two URLs, or the same URL on mobile vs desktop:

lightscout compare https://a.com https://b.com
lightscout compare https://example.com                    # mobile vs desktop

Crawl a site and audit discovered pages:

lightscout crawl https://example.com --max-pages 5

CI quality gate (exits 1 on failure):

lightscout check https://example.com --perf 90 --lcp 2500

Tools

analyze_performance

Run Lighthouse on a URL. Returns performance scores, Core Web Vitals (LCP, FCP, CLS, TBT, SI, TTFB) with good/needs-improvement/poor ratings, top recommendations sorted by impact, and diagnostics.

Parameter

Type

Required

Description

url

string

yes

URL to analyze

device

"mobile" | "desktop"

no

Device emulation (default: mobile)

categories

string[]

no

Lighthouse categories (default: ["performance"])

compare_performance

Compare Core Web Vitals between two URLs, or the same URL on mobile vs desktop. Shows per-metric deltas with winner indicators.

Parameter

Type

Required

Description

urlA

string

yes

First URL

urlB

string

no

Second URL. If omitted, compares urlA mobile vs desktop

device

"mobile" | "desktop"

no

Device emulation when comparing two URLs (default: mobile)

check_threshold

Pass/fail check against performance thresholds. Useful for CI quality gates.

Parameter

Type

Required

Description

url

string

yes

URL to check

device

"mobile" | "desktop"

no

Device emulation (default: mobile)

thresholds

object

no

Custom thresholds (see defaults below)

Default thresholds use Google's "poor" boundary -- only fails if metrics are genuinely bad:

Metric

Default (fail if worse)

performance

< 50

LCP

> 4000ms

FCP

> 3000ms

CLS

> 0.25

TBT

> 600ms

TTFB

> 1800ms

crawl_site

Discover pages on a site (via sitemap.xml or link crawling) and run Lighthouse on each. Returns per-page results plus site-wide summary with avg/min/max scores and common issues.

Parameter

Type

Required

Description

url

string

yes

Site URL or homepage to crawl

device

"mobile" | "desktop"

no

Device emulation (default: mobile)

maxPages

number

no

Maximum pages to analyze (default: 20, max: 20)

Pages are discovered via sitemap.xml first, falling back to link crawling. Up to 3 Lighthouse runs execute in parallel.

CWV Rating Thresholds

Metric

Good

Needs Improvement

Poor

LCP

<= 2500ms

2500-4000ms

> 4000ms

FCP

<= 1800ms

1800-3000ms

> 3000ms

CLS

<= 0.1

0.1-0.25

> 0.25

TBT

<= 200ms

200-600ms

> 600ms

SI

<= 3400ms

3400-5800ms

> 5800ms

TTFB

<= 800ms

800-1800ms

> 1800ms

Notes

  • TBT (Total Blocking Time) is used instead of INP/FID because Lighthouse runs lab-only tests with no real user interaction.

  • Up to 3 concurrent Lighthouse runs (semaphore-controlled).

  • Chrome is launched headless and killed after each audit.

  • MCP responses are token-optimized with condensed metrics and compact JSON.

TestScout MCP Suite

LightScout is the first tool in the TestScout MCP Suite. More tools are coming:

Tool

Description

Status

lightscout-mcp

Core Web Vitals & Lighthouse analysis

Available

testscout-diagnose

Error triage & root cause analysis

Coming soon

testscout-scrape

Structured data extraction for testing

Coming soon

testscout-plan

AI test plan & code generation

Coming soon

testscout-load

Load test generation & analysis

Coming soon

testscout-maintain

Self-healing test maintenance

Coming soon

Follow development at testscout.dev.

License

MIT

Available Tools

4 tools
analyze_performanceA

Run Lighthouse on a URL and get Core Web Vitals scores, metrics, and prioritized recommendations. Returns LCP, FCP, CLS, TBT, SI, TTFB with good/needs-improvement/poor ratings.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to analyze
deviceNoDevice emulation (default: mobile)
categoriesNoLighthouse categories: performance, accessibility, seo, best-practices (default: [performance])

TDQS

A3.5/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 discloses the outputs (LCP, FCP, CLS, etc.) and that it runs Lighthouse, but does not mention side effects, auth requirements, rate limits, or destructive potential. It is sufficient for a read-only analysis but lacks detail on behavioral traits like execution time or failure modes.

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?

Two sentences with no filler. The first sentence front-loads the key action ('Run Lighthouse on a URL') and output, the second lists specific metrics. Every sentence is purposeful and concise.

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 description covers the main outputs but lacks details on execution context (e.g., time to run, caching, error handling). With no output schema or annotations, there are gaps such as how results are returned and potential limitations.

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 coverage is 100% (all parameters described). The description adds no additional meaning beyond the schema – it does not clarify formats, defaults, or constraints. Baseline of 3 is appropriate as per guidelines.

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 it runs Lighthouse on a URL and returns Core Web Vitals, metrics, and recommendations. The verb 'Run Lighthouse' and resource 'URL' are specific, and the output is detailed. It distinguishes itself from siblings like 'crawl_site' by focusing on a single page analysis.

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?

The description provides no guidance on when to use this tool versus alternatives (check_threshold, compare_performance, crawl_site). There is no mention of context, prerequisites, or situations to avoid. The agent must infer usage from the purpose alone.

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

check_thresholdA

Pass/fail check against performance thresholds. Use for CI quality gates. Defaults use Google's 'poor' thresholds — only fails if metrics are genuinely bad.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to check
deviceNoDevice emulation (default: mobile)
thresholdsNoCustom thresholds. Defaults to Google's 'poor' boundary.

TDQS

A4/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 burden. It mentions defaults use Google's 'poor' thresholds and that it only fails on genuinely bad metrics, but does not explain the return format or side effects (though likely read-only).

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?

Two sentences effectively convey purpose, usage, and default behavior with no waste. Front-loaded for quick agent scanning.

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?

Given 100% schema coverage and no output schema, the description covers important aspects: purpose, usage context, and default behavior. Missing explicit return format but adequate for a simple pass/fail tool.

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 coverage is 100%, so baseline is 3. The description adds that defaults are Google's 'poor' boundaries, which is already in the thresholds parameter description, providing minimal extra value.

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 the tool performs a 'pass/fail check against performance thresholds' for CI quality gates, differentiating it from sibling tools like analyze_performance and compare_performance.

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 recommends use for 'CI quality gates,' providing clear context. It does not mention when not to use, but the usage is well-defined.

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

compare_performanceA

Compare Core Web Vitals between two URLs, or the same URL on mobile vs desktop. Shows per-metric deltas with winner indicators.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlAYesFirst URL to compare
urlBNoSecond URL to compare. If omitted, compares urlA mobile vs desktop.
deviceNoDevice emulation when comparing two different URLs (default: mobile)

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description must carry the full burden. It effectively communicates that this is a read-only comparison tool showing deltas and winners. However, it lacks details on data freshness, caching, or prerequisites (e.g., CrUX data availability), which would have raised the score.

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?

Two well-structured sentences. The first sentence defines the action and scope, the second specifies the output format. Every word is necessary, and the description is front-loaded with critical information.

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?

Given the moderate complexity and absence of output schema and annotations, the description covers the core functionality well but omits details like the specific metrics (LCP, FID, CLS), data source, and whether it works for any URL or only those with CrUX data. These gaps reduce completeness.

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 100%, and the description adds value by explaining the behavior when urlB is omitted (compares urlA mobile vs desktop) and the default device. This goes beyond the schema's parameter descriptions, providing practical usage instructions.

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 the tool compares Core Web Vitals between two URLs or the same URL on different devices, with a specific output of per-metric deltas and winner indicators. It distinguishes itself from siblings like analyze_performance, which likely handles single URLs.

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?

The description provides clear use cases: comparing two URLs or the same URL across devices. It explains the fallback when urlB is omitted, giving implicit guidance on when to include it. While it doesn't explicitly name alternatives, the sibling tools provide context for when not to use this tool.

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

crawl_siteA

Discover all pages on a site (via sitemap.xml or link crawling) and run Lighthouse on each. Returns per-page results plus site-wide summary with avg/min/max scores and common issues. Max 20 pages, 3 parallel runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSite URL or homepage to crawl
deviceNoDevice emulation (default: mobile)
maxPagesNoMaximum pages to analyze (default: 20, max: 20)

TDQS

A4/5.0
Behavior3/5

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

Discloses limits (max pages, parallel runs) and output structure, but with no annotations, it could mention more traits like potential slowness or authentication needs.

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?

Three concise sentences: purpose, output, constraints. No wasted words, front-loaded.

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?

Covers purpose, output, and constraints adequately for a tool with few parameters and no output schema. Could include error handling or behavior on missing sitemap.

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 covers all 3 parameters (100% coverage), so description adds little beyond clarifying crawling method for url. Baseline 3 is appropriate.

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?

Description clearly states it discovers all pages via sitemap or crawling and runs Lighthouse, returning per-page and summary results. This distinguishes it from siblings that focus on single pages or comparisons.

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?

Provides context (site-wide audit) and constraints (max 20 pages, 3 parallel runs), but does not explicitly state when to use vs alternatives like analyze_performance for single pages.

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. 4 tool updatesv1.0.1
    • First observedanalyze_performance
    • First observedcheck_threshold
    • First observedcompare_performance
    • First observedcrawl_site

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: single URL analysis, threshold pass/fail check, two-URL comparison, and multi-page crawl. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with lowercase underscores: analyze_performance, check_threshold, compare_performance, crawl_site. No deviations.

Tool Count5/5

Four tools is well-scoped for the performance auditing domain. Each tool serves a necessary function without bloat or deficiency.

Completeness4/5

Core workflows (single analysis, comparison, crawl, CI gate) are covered. Minor gap: no tool for customizing thresholds, but defaults are sensible.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Allows AI assistants such as Cursor/Cline/GitHub Copilot to use Google's lighthouse tool to measure perf metrics for your webpage. You can then run an agentic loop and get the assistants to optimize those metrics!
    2
    677 npm
    205
    MIT
  • A
    license
    Not graded
    quality
    C
    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.
    677 npm
    4
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Analyzes websites like a senior performance engineer and produces prioritized Core Web Vitals recommendations. Provides 16 tools for detailed performance analysis, including Lighthouse, CrUX, WordPress and Cloudflare inspections.
    16
    -