使用说明
PageSpeed洞察和CrUX MCP服务器
Google PageSpeed Insights和Chrome用户体验的原生Go和C#MCP服务器 报告。服务器将真实用户字段数据与合成Lighthouse分开 实验室数据并揭示了当前Lighthouse 13的见解,而不会使其变得平坦 结构化细节。
预构建的二进制文件不需要Go。NET、Node.js或Python运行时环境。
能力
- 来自PSI嵌入式CrUX响应的真实用户页面和原始数据
- 真正的核心网络生命:LCP、CLS和INP
- Lighthouse实验室指标、类别分数、执行元数据和重定向
- Lighthouse 13洞察细节和指标节约
- 可选的实验性代理浏览、WebMCP和
llms.txt审计 - 直流CrUX数据,包括LCP子部件、RTT和导航类型
- 每周多达40个CrUX历史API收集期
- STDIO和无状态流式HTTP MCP传输
- 匹配Go和C#原生AOT实现
Google API设置
- 在中创建或选择项目 谷歌云控制台.
- 启用 PageSpeed洞察API.
- 创建API密钥。
- 使用
get_crux_data或get_crux_history,也启用 Chrome用户体验报告API. - 如果密钥有API限制,请允许您打算使用的每个API。
当Chrome用户体验报告时,直接的CrUX工具返回谷歌的权限错误 API被密钥的限制禁用或排除。PSI分析继续 独立工作。
安装
从下载二进制文件 GitHub发布:
| 平台 | Go | C#原生AOT |
|---|---|---|
| Linux x64 | psi-mcp-go-linux-amd64 |
psi-mcp-csharp-linux-x64 |
| Linux ARM64 | psi-mcp-go-linux-arm64 |
psi-mcp-csharp-linux-arm64 |
| macOS英特尔 | psi-mcp-go-darwin-amd64 |
psi-mcp-csharp-osx-x64 |
| macOS苹果硅 | psi-mcp-go-darwin-arm64 |
psi-mcp-csharp-osx-arm64 |
| Windows x64 | psi-mcp-go-windows-amd64.exe |
psi-mcp-csharp-win-x64.exe |
| Windows ARM64 | psi-mcp-go-windows-arm64.exe |
psi-mcp-csharp-win-arm64.exe |
发布资产还包括 manage-mcp-service.ps1 用于运行二进制文件
作为一个共享的本地服务。
在Linux或macOS上:
chmod +x psi-mcp-go-linux-amd64
STDIO配置
{
"mcpServers": {
"pagespeed-insights": {
"type": "stdio",
"command": "/path/to/psi-mcp-go-linux-amd64",
"args": [],
"env": {
"GOOGLE_PSI_API_KEY": "your-api-key"
}
}
}
}
密钥可以改为传递 --api-key 或从
GOOGLE_PSI_API_KEY 进入a .env 文件。
HTTP传输
./psi-mcp-go-linux-amd64 \
--transport http \
--listen-address 127.0.0.1 \
--port 8080 \
--allowed-hosts localhost,127.0.0.1
共享MCP端点为 http://127.0.0.1:8080/mcp;服务主管可以
探针 http://127.0.0.1:8080/health.
{
"mcpServers": {
"pagespeed-insights": {
"type": "http",
"url": "http://127.0.0.1:8080/mcp",
"tools": ["*"]
}
}
}
每个Copilot或其他代理会话都可以使用相同的进程。C#二进制文件
接受相同的传输、地址和端口选项。C#使用ASP。NET核心
AllowedHosts 配置;Go使用 --allowed-hosts.
HTTP传输是无状态的。它包括主机报头和跨源防御, 但确实如此 不 添加应用程序身份验证。不要公开曝光 无需经过身份验证的反向代理或专用网络。
看 运行一个共享服务 对于幂等性 start/status/stop/update命令和从每个会话STDIO迁移。
MCP工具
| 工具 | 目的 |
|---|---|
analyze_page |
使用PSI分析一个URL |
analyze_pages |
分析多达10个具有有限并发性的URL |
get_crux_data |
查询当前CrUX数据以获取URL或来源 |
get_crux_history |
最多查询40个CrUX历史周期 |
analyze_page
| 参数 | 类型 | 必填 | 默认 |
|---|---|---|---|
url |
string | 是 | - |
strategy |
string | 否 | both |
categories |
string[] | 否 | 性能、SEO、可访问性、最佳实践 |
locale |
string | 否 | PSI默认值 |
有效的策略是 mobile, desktop,以及 both。有效类别为
performance, seo, accessibility, best-practices,以及
agentic-browsing.
代理浏览是实验性的,永远不会隐式包含。
analyze_pages
接受与相同的控件 analyze_page,与 urls 替换 url.
批处理限制为10个URL和4个并发PSI请求。瞬态
网络、HTTP 429和HTTP 5xx故障最多重试三次。
结果包含确定性 results 和 errors 数组因此失败
URL不会丢弃成功的分析。
PSI响应模型
{
"results": [
{
"metadata": {
"inputUrl": "https://example.com/",
"strategy": "mobile",
"lighthouseVersion": "13.4.0",
"requestedUrl": "https://example.com/",
"finalUrl": "https://www.example.com/"
},
"fieldData": {
"page": {
"overallRating": "needs-improvement",
"originFallback": false,
"metrics": {
"lcp": {
"id": "LARGEST_CONTENTFUL_PAINT_MS",
"percentile": 75,
"value": 3100,
"unit": "ms",
"rating": "needs-improvement",
"distributions": []
},
"inp": {
"id": "INTERACTION_TO_NEXT_PAINT",
"percentile": 75,
"value": 240,
"unit": "ms",
"rating": "needs-improvement",
"distributions": []
}
}
}
},
"labData": {
"categories": {
"performance": {
"id": "performance",
"title": "Performance",
"score": 0.82,
"scoreDisplayMode": "gauge"
}
},
"metrics": {},
"insights": [
{
"id": "render-blocking-insight",
"title": "Render-blocking requests",
"metricSavings": {
"LCP": 710
},
"details": {
"type": "table",
"items": []
}
}
],
"diagnostics": [],
"unscoredAudits": [],
"passedAuditIds": [],
"notApplicableAuditIds": [],
"manualAuditIds": [],
"entities": []
}
}
],
"errors": []
}
现场评级来自谷歌的CrUX类别。实验室指标保留Lighthouse 分数和单位;服务器不会将合成指标误标记为真实用户 核心网络生命。
get_crux_data
| 参数 | 类型 | 必填 | 默认 |
|---|---|---|---|
target |
string | 是 | - |
target_type |
string | 否 | url |
form_factor |
string | 否 | all |
metrics |
string[] | 否 | 全部可用 |
target_type 是 url 或 origin. form_factor 是 all, phone, tablet,
或 desktop.
get_crux_history
接受相同的输入 collection_period_count从1到40,以及
默认为25。不可用的句点以JSON格式返回 null,从来没有 NaN.
建筑物
cd go
go test ./...
golangci-lint run
go build -ldflags="-s -w -X main.version=dev" -trimpath -o psi-mcp-go .
cd csharp
dotnet test PageSpeedMcp.slnx -c Release
dotnet publish src/PageSpeedMcp/PageSpeedMcp.csproj \
-r linux-x64 -c Release --self-contained true
相关项目
关于
由...建造 尼克·科森蒂诺 (开发负责人)。
贡献
- 在提交功能之前打开一个问题。
- 保持Go和C#的行为对等。
- 运行Go-lint/tests、C#build/tests和严格的文档构建。
许可证
MIT许可证-请参阅 许可证.
