Skip to main content
Glama
1nc0gn30

cwv-speed-engine

by 1nc0gn30

โšก Google Speed Studio & Core Web Vitals Engine (cwv-speed-engine)

CI Matrix Python Versions UI MCP Ready License

Google Speed Studio (cwv-speed-engine) is an enterprise-grade Core Web Vitals auditing, automated speed transformation, PWA generation, and AI Agent MCP hub designed to help modern web applications achieve and maintain a perfect 100/100 Core Web Vitals score (LCP < 1.2s, CLS 0, INP < 50ms).


๐ŸŒŸ Key Capabilities

  • ๐ŸŽจ Google Material 3 Speed Studio Web UI: Full-featured, offline-ready web UI with animated Speed Gauge Dial, metric cards, and 8 interactive studios.

  • โšก Deterministic Core Web Vitals Auditor: In-depth standards-based analysis for LCP, CLS, INP, FCP, and TTFB with actionable remediation advice.

  • ๐Ÿ› ๏ธ Automated HTML Speed Transformer: Automated AST rewrites that inject explicit image dimensions, native lazy loading, font preconnects, script deferrals, and hero preload priority tags.

  • ๐Ÿ“ฑ PWA & Service Worker Studio: Interactive builder for W3C web manifests and tiered Service Worker caching strategies (stale-while-revalidate, cache-first, network-first).

  • ๐Ÿ–ผ๏ธ OpenGraph & Social Previewer: Live mockups for Google Search SERP, Twitter Cards, and LinkedIn snippets with 1-click meta tag copying.

  • โš–๏ธ Performance Diff Comparator: Measure before vs after speed gains, metric deltas, and resolved audit findings.

  • ๐Ÿš€ Cache-Control & Headers Exporter: Instant production configs for Netlify, Vercel, Nginx, Cloudflare, Apache, and Next.js.

  • ๐Ÿค– AI Agent & MCP Hub: Zero-dependency Model Context Protocol (MCP) server supporting Claude Desktop, Cursor, Cline, and Zed.

  • ๐Ÿšฆ CI/CD Quality Gate: Reusable GitHub Actions workflow to block PRs regressing speed scores.

  • ๐Ÿ“ฆ Zero Mandatory Dependencies: Core engine and web server run purely on the Python standard library.


Related MCP server: Lighthouse MCP

๐Ÿš€ Quick Start

Installation

# Clone the repository
git clone https://github.com/google/cwv-speed-engine.git
cd cwv-speed-engine

# Install in editable mode
pip install -e .

Launch Google Speed Studio Web UI

python -m cwv_speed_engine.ui_server --port 8448 --open

Open your browser to http://localhost:8448 to access the interactive studio.


๐Ÿ’ป CLI Commands Cheatsheet

# 1. Audit a live URL
cwv-speed audit https://example.com --device mobile

# 2. Audit raw HTML markup
cwv-speed audit --html "<!DOCTYPE html>..."

# 3. Automatically transform HTML for maximum speed
cwv-speed optimize unoptimized.html -o index.html

# 4. Generate Progressive Web App Suite
cwv-speed pwa --name "My Speed App" --strategy stale-while-revalidate

# 5. Export Production Cache Headers
cwv-speed cache --platform netlify -o _headers

# 6. Run CI Gate on Pull Requests
cwv-speed ci-gate https://staging.example.com --min-score 90 --max-cls 0.05

๐Ÿค– AI Agent MCP Integration (Claude & Cursor)

cwv-speed-engine runs natively as an MCP server over stdio.

Claude Desktop Setup

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "cwv-speed-engine": {
      "command": "python3",
      "args": ["-m", "cwv_speed_engine.mcp_server"],
      "env": {
        "PYTHONPATH": "src"
      }
    }
  }
}

Cursor IDE Setup

Add to .cursor/mcp.json:

{
  "mcp": {
    "servers": {
      "cwv-speed-engine": {
        "command": "python3",
        "args": ["-m", "cwv_speed_engine.mcp_server"],
        "env": {
          "PYTHONPATH": "src"
        }
      }
    }
  }
}

๐Ÿ“‚ Production Reference Examples

Explore production architecture blueprints in examples/:


๐Ÿ“š Documentation


๐Ÿงช Running Tests

PYTHONPATH=src pytest tests/ -v

๐Ÿ“„ License

Apache License 2.0. See LICENSE for details.

Available Tools

6 tools
cwv_audit_siteA

Run a comprehensive Core Web Vitals audit on a live URL or local HTML file, returning 0-100 score, LCP/CLS/INP metrics, and diagnostic findings.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceNoDevice simulation mode. Default: 'mobile'.mobile
targetYesURL (e.g. 'https://example.com') or local file path to audit.
min_scoreNoMinimum acceptable score threshold (0-100). Default: 85.

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 full behavioral burden. It discloses the action type and return value, but does not mention potential side effects, network/browser dependencies, failure behavior, or whether any files are modified. For an audit tool this is acceptable but not deeply transparent.

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 sentence that front-loads the verb, resource, and key outputs with no filler. Every phrase contributes useful information, making it easy for an agent to parse quickly.

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 the simple parameter set and absence of an output schema, the description provides enough information for an agent to understand the tool's purpose and expected result. It could be more complete by mentioning prerequisites or network requirements, but it is not missing critical calling information.

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?

The input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds context about the 0-100 score, which helps clarify min_score, but it does not add meaningful semantics beyond the schema for device or target.

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 names a specific action ('Run a comprehensive Core Web Vitals audit'), a clear resource ('a live URL or local HTML file'), and the expected outputs ('0-100 score, LCP/CLS/INP metrics, and diagnostic findings'). It is clearly distinguishable from the sibling tools, which focus on optimization, cache config, PWA generation, OG cards, and performance diffing.

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 clearly states what the tool operates on and what it produces, giving an agent a solid sense of when to call it. It does not explicitly mention alternatives or exclusion criteria, but the intended use case is evident from the audit framing and sibling context.

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

cwv_diff_performanceA

Compare two performance audits (URLs, files, or audit results) with score deltas and diagnostic comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_aYesBaseline URL, file path, or JSON audit string.
target_bYesCandidate/Optimized URL, file path, or JSON audit string.

TDQS

A3.8/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 disclosure burden. It does add useful behavioral context by promising 'score deltas and diagnostic comparison' as outputs, and the 'compare' verb implies a read-only operation. However, it does not disclose whether network calls to the URLs occur, whether the operation has side effects, or what the response structure looks like. Decent but incomplete disclosure for an annotation-free tool.

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 names the verb, resource, accepted inputs, and output characteristics with zero filler. The input-format parenthetical earns its place by signaling flexibility, and every word contributes to the agent's decision about whether to invoke the tool.

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 two-string-parameter comparison tool with full schema coverage, the description is reasonably complete: it covers the operation, the input forms, and the output characteristics (score deltas, diagnostics). The only gap is the lack of an explicit return-structure statement, but since no output schema exists and the description hints at what the output contains, this is a minor omission rather than a blocking one.

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 100%, with both target_a ('Baseline URL, file path, or JSON audit string') and target_b ('Candidate/Optimized URL, file path, or JSON audit string') already documented. The description merely echoes these accepted forms without adding syntax, format, or usage details beyond the schema, so the baseline 3 for high coverage applies.

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 opens with a specific verb ('Compare') and a specific resource ('two performance audits'), and immediately names the three accepted input forms (URLs, files, audit results). The compare operation is clearly distinct from its siblings (cwv_audit_site audits, cwv_optimize_html optimizes, cwv_generate_* generates), so an agent can differentiate it without opening the schema.

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?

The accepted input forms (URLs, files, audit results) and the 'baseline vs. candidate/optimized' framing of the params imply when the tool is useful โ€” comparing two performance states. However, there is no explicit guidance on when not to use it or how it relates to siblings such as cwv_audit_site (e.g., 'run cwv_audit_site first, then compare two results here'). Usage context is implied, not stated.

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

cwv_generate_cache_configA

Generate immutable caching headers and security configuration files for Netlify, Vercel, Nginx, Next.js, Cloudflare, or Apache.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkYesTarget hosting or server framework.
html_ttl_secondsNoCache-Control max-age in seconds for HTML documents. Default: 0.
static_asset_ttl_daysNoCache-Control max-age in days for immutable static assets. Default: 365.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing behavior. It says the tool generates files, but does not state whether it returns content, writes to the filesystem, overwrites existing files, or any other side effects. It also omits details about security configuration scope. This is a significant gap for a tool with zero annotation coverage.

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 sentence that front-loads the verb and resource, then lists targets. There is no filler, repetition, or unnecessary detail. Every word contributes to understanding the tool's function.

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?

For a three-parameter generator with no output schema, the description covers the core purpose but omits the output format (file content vs. path) and does not mention the configurable TTL parameters. It is minimally adequate but leaves an agent needing to infer what the tool actually returns and how parameters map to behavior.

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 the baseline applies. The description adds no extra meaning beyond what the schema already states; it does not explain how html_ttl_seconds or static_asset_ttl_days affect the generated headers, or that the defaults enforce immutability. It relies entirely on the schema, which is adequate but not enhanced.

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 uses a specific verb ('Generate') and resource ('caching headers and security configuration files'), then enumerates the exact target platforms. This clearly distinguishes it from sibling tools like cwv_audit_site (auditing) or cwv_optimize_html (optimization), which share no overlap.

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?

The target list ('Netlify, Vercel, Nginx, Next.js, Cloudflare, or Apache') implies when to use it, but the description never explicitly states 'use this when...' or identifies alternatives. There are no exclusions or comparisons to sibling tools, so usage guidance is only implicit.

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

cwv_generate_og_cardA

Generate complete OpenGraph, Twitter Card meta tags, Schema.org JSON-LD, and SVG preview banner.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoCanonical page URL.
imageNoSocial share preview image URL.
titleYesPage or article title.
site_nameNoWebsite or brand name.
descriptionYesPage or article description.
twitter_handleNoTwitter creator/site handle (e.g. '@site').

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It lists generated artifact types, but does not say whether the tool returns markup, writes files, requires network access, or has side effects. No caveats or edge-case behavior are disclosed.

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 sentence that front-loads the action and enumerates the four output types with no filler. Every word adds meaning, and the structure is immediately scannable for an agent.

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 schema fully documents parameters, but with no annotations and no output schema, the description does not explain return format, required inputs beyond the schema, or when to choose this tool over siblings. Adequate for a simple generator, but some practical context is missing.

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 100%, so the six parameters are already self-documenting with names and descriptions. The tool description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.

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 states a specific verb ('Generate') and a concrete resource: complete OpenGraph tags, Twitter Card meta tags, Schema.org JSON-LD, and an SVG preview banner. This clearly distinguishes it from sibling tools like cwv_generate_pwa or cwv_generate_cache_config by naming exactly what artifacts it produces.

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?

The description implies usage: an agent would use this when it needs social sharing/SEO meta tags and a preview banner. However, it never explicitly states when to prefer this tool over siblings, nor does it mention any exclusions or prerequisites such as having a canonical URL or social image.

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

cwv_generate_pwaB

Generate W3C webmanifest, Service Worker (sw.js) caching bundle, and HTML header snippet for Progressive Web App compliance.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the web application.
start_urlNoPWA launch URL. Default: '/'./
short_nameNoShort name for mobile home screen icon.
theme_colorNoHex theme color. Default: '#1a73e8'.#1a73e8
background_colorNoHex splash background color. Default: '#ffffff'.#ffffff

TDQS

B3.4/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 burden of behavioral disclosure. It does not say whether the tool writes files to disk, overwrites existing artifacts, or returns raw content, nor does it describe side effects or idempotency. The artifact list gives some behavior, but the production/delivery mechanism remains opaque.

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 with no filler; every phrase ('W3C webmanifest', 'sw.js caching bundle', 'HTML header snippet') adds distinguishing information. It is appropriately sized for 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?

The parameter surface is simple and fully documented, but with no output schema and no annotations the description still omits how the generated bundle is returned or applied and whether invocation has side effects. An agent would need to call the tool or seek external docs to know if it simply returns text or modifies the project.

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 100%, so the schema already documents all five parameters with defaults for start_url, theme_color, and background_color. The description adds no parameter-specific guidance, but with full schema coverage the baseline of 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?

The description opens with the specific verb 'Generate' and lists three concrete outputs (W3C webmanifest, Service Worker caching bundle, HTML header snippet), all tied to PWA compliance. This artifact list is unique among the sibling tools, so an agent can reliably distinguish it from cwv_generate_cache_config, cwv_generate_og_card, and the audit/optimization tools.

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?

The phrase 'for Progressive Web App compliance' implies the intended use case, but the description never states when to choose this over a sibling or mentions alternatives. There are no explicit exclusions or prerequisites, leaving the routing decision largely to the agent's inference from sibling names.

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

cwv_optimize_htmlB

Transform and optimize HTML code with automated image dimensions, font preconnects, script deferral, and lazy loading to boost CWV scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoRaw HTML string to optimize.
file_pathNoPath to local HTML file to read and optimize (used if html string is omitted).
defer_scriptsNoWhether to add 'defer' to render-blocking head scripts.
lazy_load_imagesNoWhether to add loading='lazy' and decoding='async' to images.
preconnect_fontsNoWhether to inject font preconnect headers.
inline_critical_cssNoWhether to inline critical CSS.

TDQS

B3.3/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 burden of behavioral disclosure. It states the transformations applied but does not reveal whether the tool returns the optimized HTML string, writes back to file_path (a destructive side effect), or leaves the input untouched. For a transformation tool with no output schema, the missing return-value and file-mutation behavior is a significant 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?

A single, front-loaded sentence that states the verb, resource, and scope of work without filler. It efficiently bundles the four optimization behaviors and the motivating goal. It loses a point only because the return-value and file-handling behavior are absent, which arguably warrants a bit more space.

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?

For a transformation tool with 6 parameters, no output schema, and no annotations, the description omits essential information: what the tool returns, whether it reads from or writes to file_path, and any side effects of the transformation. An agent cannot fully predict the tool's behavior from this definition alone.

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 100%, so all six parameters are documented in the schema; the baseline is 3. The description adds thematic value by tying defer_scripts, lazy_load_images, and preconnect_fonts to the stated optimization goals and CWV context, but it does not add syntax, format, or inter-parameter dependency details beyond what the schema already provides.

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 states a specific verb ('transform and optimize'), a clear resource ('HTML code'), and enumerates the concrete transformations (image dimensions, font preconnects, script deferral, lazy loading) plus the goal (boost CWV scores). This clearly differentiates it from its siblings, which audit sites, generate cache configs/PWAs/OG cards, or diff performance โ€” none of which transform HTML.

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?

The purpose implies usage (optimize HTML to improve Core Web Vitals), and the sibling names are distinct enough that an agent could infer when to pick this tool. However, there is no explicit when/when-not guidance โ€” nothing about preferring the html string over file_path, nor whether to call this before or after an audit like cwv_audit_site, nor when to disable individual optimizations.

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. 6 tool updatesv1.0.0
    • First observedcwv_audit_site
    • First observedcwv_diff_performance
    • First observedcwv_generate_cache_config
    • First observedcwv_generate_og_card
    • First observedcwv_generate_pwa
    • First observedcwv_optimize_html

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct function: audit, optimize, cache config, PWA generation, OG card generation, and performance diffing. No two tools have overlapping purposes; even the generate tools produce clearly different artifacts.

Naming Consistency5/5

All tools follow the exact cwv_verb_noun pattern with consistent snake_case. Verbs (audit, optimize, generate, diff) are specific and align with tool intent.

Tool Count5/5

Six tools is a well-scoped set for a Core Web Vitals engine, covering audit, optimization, deployment configs, PWA, social cards, and comparison without bloat or gaps.

Completeness4/5

The surface covers the main CWV workflow: audit, optimize, cache, compare, and supporting assets. Minor gap: no explicit tool for detailed per-resource diagnostics or custom metric tracking, but audit findings compensate.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI models to analyze webpage performance using the Google PageSpeed Insights API, providing real-time performance scores and improvement suggestions.
    1
    167 npm
    12
    MIT
  • 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.
    752 npm
    4
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to perform instant SEO, performance, and security audits of any website through the Model Context Protocol. It provides comprehensive analysis without requiring API keys or configuration.
    11
    5
    MIT