Skip to main content
Glama

Lighthouse MCP

by mizchi
performance.ts2.85 kB
import type { LighthouseReport as LHReport } from '../types'; import { Result, err, ok } from 'neverthrow'; import { analyzeReport } from './scores'; import { detectProblems } from './problems'; import { detectPatterns } from './patterns'; /** * Lighthouseレポートから包括的な分析と最適化提案を生成 * * This is the main entry point for performance analysis. * It provides a unified API that combines score analysis, problem detection, and fix generation. */ export class PerformanceAnalyzer { /** * レポートを分析して問題と修正提案を生成 * * @param report - Lighthouse report to analyze * @returns Analysis result containing score analysis, detected problems, and suggested fixes */ async analyze(report: LHReport): Promise< Result< { score: number; scoreAnalysis: ReturnType<typeof analyzeReport>; problems: ReturnType<typeof detectProblems>; patterns: ReturnType<typeof detectPatterns>; }, Error > > { try { // バリデーション if (!report || !report.categories) { return err(new Error('Invalid report: missing required fields')); } // スコア分析 const scoreAnalysis = analyzeReport(report); const score = report.categories.performance?.score || 0; // 問題検出 const problems = detectProblems(report); // パターン検出 const patterns = detectPatterns(report); return ok({ score, scoreAnalysis, problems, patterns, }); } catch (error) { return err(new Error(`Analysis failed: ${error}`)); } } } /** * Convenience function for analyzing performance */ export function analyzePerformance(report: LHReport) { const scoreAnalysis = analyzeReport(report); const problems = detectProblems(report); const patterns = detectPatterns(report); const score = report.categories?.performance?.score || 0; // Extract metrics from audits const metrics: Record<string, unknown> = {}; if (report.audits) { const lcpAudit = report.audits['largest-contentful-paint']; const fcpAudit = report.audits['first-contentful-paint']; const clsAudit = report.audits['cumulative-layout-shift']; const tbtAudit = report.audits['total-blocking-time']; const ttfbAudit = report.audits['server-response-time']; if (lcpAudit?.numericValue) metrics.lcp = lcpAudit.numericValue; if (fcpAudit?.numericValue) metrics.fcp = fcpAudit.numericValue; if (clsAudit?.numericValue) metrics.cls = clsAudit.numericValue; if (tbtAudit?.numericValue) metrics.tbt = tbtAudit.numericValue; if (ttfbAudit?.numericValue) metrics.ttfb = ttfbAudit.numericValue; } return { score, metrics, patterns, problems, scoreAnalysis }; }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mizchi/lighthouse-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server