MCP server wrapper for Google PageSpeed Insights — web performance and Core Web Vitals analysis via the PageSpeed Insights API v5.
Google PageSpeed Insights analyzes a URL for performance, accessibility, SEO, and best-practices using Lighthouse and real-world Chrome User Experience Report (CrUX) data. This MCP server calls the PageSpeed Insights API v5 directly, supporting both mobile and desktop strategies and all four Lighthouse audit categories. An optional PAGESPEED_API_KEY raises the quota limit for high-volume usage.
API key optional — the PageSpeed Insights API works without a key at lower rate limits; set PAGESPEED_API_KEY for higher quota (free at Google Cloud Console).
Tools:
run_pagespeed — Run PageSpeed Insights on a URL (mobile or desktop strategy, configurable categories).run_pagespeedRun Google PageSpeed Insights on a URL and return the full Lighthouse report.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | — | URL to analyze (must include scheme, e.g. https://example.com) |
strategy | string | No | mobile | mobile or desktop |
categories | string | No | all | Comma-separated: PERFORMANCE,ACCESSIBILITY,SEO,BEST_PRACTICES |
Here are example prompts you can use with Claude (or any MCP client) when this tool is connected:
docker-compose up -d
docker run -i --rm hackerdogs/pagespeed-mcp:latest
docker run -d -p 8378:8378 \
-e MCP_TRANSPORT=streamable-http \
-e MCP_PORT=8378 \
hackerdogs/pagespeed-mcp:latest
Add to your Claude Desktop or Cursor MCP config:
{
"mcpServers": {
"pagespeed-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT", "hackerdogs/pagespeed-mcp:latest"],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
First, start the server using Docker Compose or docker run with HTTP mode (see Deploy above), then point your MCP client at the running server:
{
"mcpServers": {
"pagespeed-mcp": {
"url": "http://localhost:8378/mcp"
}
}
}
When to use HTTP mode: HTTP mode is ideal for shared/remote deployments, multi-user setups, and Hackerdogs scheduled prompts. The server runs as a long-lived process and accepts connections from multiple MCP clients concurrently.
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT | stdio | Transport mode: stdio or streamable-http |
MCP_PORT | 8378 | HTTP port (only used with streamable-http) |
PAGESPEED_API_KEY | `` | Google PageSpeed Insights API key (optional, raises quota) |
The fastest way to get started is through Hackerdogs:
Give it a couple of minutes to go live. Then start querying by asking Hackerdogs to use the tool explicitly (e.g. "Use naabu to scan example.com"). If you don't specify, Hackerdogs will automatically choose the best tool for the job — it may choose this one on its own.
Want to contribute or chat with the team? Join our Discord.
docker build -t hackerdogs/pagespeed-mcp:latest .
./test.sh
1. Start the server in HTTP mode:
docker run -d --rm --name pagespeed-mcp-test -p 8378:8378 \
-e MCP_TRANSPORT=streamable-http \
hackerdogs/pagespeed-mcp:latest
2. Initialize the MCP session:
SESSION_ID=$(curl -s -D - -X POST http://localhost:8378/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1"}}}' \
2>&1 | grep -i mcp-session-id | awk '{print $2}' | tr -d '\r\n')
curl -s -X POST http://localhost:8378/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
3. Call a tool:
curl -s -X POST http://localhost:8378/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"run_pagespeed","arguments":{"url":"https://example.com","strategy":"mobile"}}}'
4. Clean up:
docker stop pagespeed-mcp-test
You can run the PageSpeed MCP server in the same container by overriding the entrypoint without starting the MCP wrapper.
Show help:
docker run -i --rm --entrypoint python hackerdogs/pagespeed-mcp:latest mcp_server.py --help
Content type
Image
Digest
sha256:665e28151…
Size
74.8 MB
Last updated
4 months ago
docker pull hackerdogs/pagespeed-mcp