npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lightscout-mcp

v0.1.2

Published

MCP server for Core Web Vitals analysis powered by Lighthouse. Part of the TestScout MCP Suite.

Readme

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

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