Skip to main content
Glama
rhamevangelista

Performance Engineer MCP

README.md
# Performance Engineer MCP

An MCP server that analyzes websites like a senior performance engineer and produces prioritized Core Web Vitals recommendations.

Connect it to Claude Desktop and ask things like:
- *"Analyze the performance of https://example.com"*
- *"Give me a visual performance report for https://example.com"*
- *"Give me a pagespeed document report for https://example.com"*
- *"Generate a WP Rocket config for my WordPress site"*
- *"Compare these two performance reports and tell me what improved"*

## Tools (18)

| # | Tool | What it does |
|---|------|-------------|
| 1 | `analyze_website` | Full orchestrator — runs all analyzers and returns prioritized recommendations |
| 2 | `run_lighthouse` | Lighthouse audit (scores + CWV lab data) via local Chromium |
| 3 | `get_core_web_vitals` | CrUX real-user field data via PageSpeed Insights API (falls back to Lighthouse) |
| 4 | `analyze_headers` | Compression, caching, CDN detection, security headers |
| 5 | `analyze_html` | Render-blocking resources, meta tags, script loading strategy |
| 6 | `detect_cms` | Fingerprints WordPress, Shopify, Next.js, Nuxt, Astro, Webflow, Wix, Squarespace |
| 7 | `analyze_images` | Oversized images, wrong formats, missing lazy load, LCP candidate |
| 8 | `analyze_css` | Unused CSS via Playwright coverage, render-blocking stylesheets |
| 9 | `analyze_javascript` | Unused JS, third-party scripts (GA4, GTM, Pixel, Hotjar), render-blocking |
| 10 | `analyze_fonts` | Google Fonts preconnect, font-display, WOFF2 format, preload hints |
| 11 | `wordpress_inspector` | Deep WordPress audit — 20+ plugin fingerprints, plugin-level recommendations |
| 12 | `cloudflare_inspector` | Cache status, Brotli, HTTP/3, Early Hints, Polish |
| 13 | `generate_report` | Narrative Markdown report with scores, CWV, and prioritized fixes |
| 14 | `generate_report_html` | Self-contained HTML dashboard — score cards, CWV grid, LCP bar chart, recommendations. Works for any CMS. Rendered as a visual Artifact in Claude. |
| 15 | `generate_report_docx` | Full Word document (.docx) saved to `~/Downloads/` — cover page, exec summary, CWV table, LCP savings table, all recommendations with evidence and fixes |
| 16 | `generate_wp_rocket_config` | WP Rocket settings JSON with Elementor/WooCommerce awareness |
| 17 | `generate_cloudflare_rules` | Cache Rules, Transform Rules, and settings guide |
| 18 | `compare_performance` | Before/after delta from two `analyze_website` JSON reports |

## Requirements

- Node.js 22+
- Claude Desktop

## Installation

```bash
git clone https://github.com/YOUR_USERNAME/performance-engineer-mcp.git
cd performance-engineer-mcp
npm install        # also downloads Playwright Chromium (~300MB)
npm run build
```

### Optional: Google PageSpeed Insights API key

Without a key, `get_core_web_vitals` returns Lighthouse lab data. With a key it returns real-user CrUX field data (p75 from actual Chrome users).

```bash
cp .env.example .env
# Edit .env and add your key — get one free at:
# https://developers.google.com/speed/docs/insights/v5/get-started
```

## Connect to Claude Desktop

Add to your `claude_desktop_config.json`:

**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`  
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "performance": {
      "command": "node",
      "args": ["/absolute/path/to/performance-engineer-mcp/dist/server.js"]
    }
  }
}
```

Restart Claude Desktop after saving.

## Usage examples

```
analyze_website { "url": "https://example.com" }

run_lighthouse { "url": "https://example.com", "strategy": "mobile" }

get_core_web_vitals { "url": "https://example.com" }

wordpress_inspector { "url": "https://my-wp-site.com" }

generate_report { "url": "https://example.com" }

# Visual HTML dashboard (rendered as an Artifact in Claude)
generate_report_html { "url": "https://example.com" }

# Word document saved to ~/Downloads/
generate_report_docx { "url": "https://example.com" }

generate_wp_rocket_config { "url": "https://my-wp-site.com" }

generate_cloudflare_rules { "url": "https://example.com" }

compare_performance {
  "before_report": "<JSON from first analyze_website>",
  "after_report": "<JSON from second analyze_website>"
}
```

## Development

```bash
npm run dev     # watch mode
npm test        # vitest unit tests
npm run build   # compile TypeScript → dist/
```

## Architecture

```
src/
├── server.ts              # MCP entry point — registers all 18 tools
├── types.ts               # TypeScript interfaces
├── browser.ts             # Playwright Chromium singleton
└── tools/
    ├── lighthouse.ts      # run_lighthouse
    ├── pagespeed.ts       # get_core_web_vitals
    ├── headers.ts         # analyze_headers
    ├── html.ts            # analyze_html
    ├── cms.ts             # detect_cms
    ├── images.ts          # analyze_images
    ├── css.ts             # analyze_css
    ├── javascript.ts      # analyze_javascript
    ├── fonts.ts           # analyze_fonts
    ├── platform.ts        # CMS dispatcher
    ├── wordpress.ts       # wordpress_inspector
    ├── cloudflare.ts      # cloudflare_inspector
    ├── report.ts          # generate_report (Markdown)
    ├── report-html.ts     # generate_report_html (visual HTML Artifact)
    ├── report-docx.ts     # generate_report_docx (Word document → Downloads/)
    ├── wp-rocket.ts       # generate_wp_rocket_config
    ├── cloudflare-rules.ts # generate_cloudflare_rules
    ├── compare.ts         # compare_performance
    └── recommendations.ts # generate_recommendations + analyze_website
```

## License

MIT

TDQS

A3.7/5.0

Scored across 16 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap: 'analyze_website' already includes Lighthouse and header checks, which are also available as separate tools ('run_lighthouse', 'analyze_headers'). This could cause confusion on which tool to use for a specific analysis.

Naming Consistency3/5

The naming conventions are mixed: 'analyze_*' for detailed audits, 'generate_*' for config generation, 'detect_cms', 'get_core_web_vitals', 'run_lighthouse', and 'cloudflare_inspector' without a verb prefix. While each is descriptive, the lack of a consistent pattern may reduce predictability.

Tool Count4/5

With 16 tools, it is slightly above the typical 3-15 range, but the number is justified by the comprehensive coverage of web performance auditing. Each tool serves a specific optimization area, so the count is appropriate.

Completeness4/5

The server covers most major aspects of front-end and CDN performance analysis (CSS, JS, images, fonts, headers, CMS, Cloudflare, Core Web Vitals, Lighthouse). While server-side metrics are missing, that is outside the stated scope.

Maintenance

ActivityStale
ResponsivenessNo issues