Skip to main content
Glama

get_seo_analysis

Analyze website SEO performance and gain actionable recommendations by auditing URL, emulating device type, and optionally including detailed metrics.

Instructions

Get SEO analysis and recommendations for a website

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
deviceNoDevice to emulate (default: desktop)desktop
includeDetailsNoInclude detailed metrics and recommendations
urlYesURL to audit

Implementation Reference

  • MCP tool handler for 'get_seo_analysis' that runs SEO analysis via helper, processes results including audits if requested, structures response with recommendations, and handles errors.
    server.tool( "get_seo_analysis", "Get SEO analysis and recommendations for a website", detailedAuditSchema, async ({ url, device, includeDetails }) => { try { const result = await getSeoAnalysis(url, device, includeDetails); const data: Record<string, unknown> = { seoScore: result.seoScore, fetchTime: result.fetchTime, includeDetails, }; if (includeDetails && "audits" in result) { data.audits = result.audits.map((audit) => ({ title: audit.title, score: audit.score !== null ? Math.round((audit.score || 0) * 100) : null, description: audit.description, displayValue: audit.displayValue || "N/A", })); } const structuredResult = createStructuredAudit("SEO Analysis", result.url, result.device, data, [ "Optimize meta titles and descriptions", "Implement structured data markup", "Ensure mobile-friendly responsive design", "Improve page loading speed", "Create XML sitemap and robots.txt", ]); return { content: [ { type: "text" as const, text: JSON.stringify(structuredResult, null, 2), }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [ { type: "text" as const, text: JSON.stringify( { error: "SEO analysis failed", url, device: device || "desktop", message: errorMessage, }, null, 2, ), }, ], isError: true, }; } }, );
  • Input schema (Zod) for the get_seo_analysis tool, defining url, device, and includeDetails parameters.
    export const detailedAuditSchema = { url: baseSchemas.url, device: baseSchemas.device, includeDetails: baseSchemas.includeDetails, };
  • Core helper function that performs Lighthouse SEO audit, returns score and optional detailed audits.
    export async function getSeoAnalysis(url: string, device: "desktop" | "mobile" = "desktop", includeDetails = false) { const result = await runLighthouseAudit(url, ["seo"], device); const categoryData = result.categories.seo; const baseData = { url: result.url, device: result.device, seoScore: categoryData?.score || 0, fetchTime: result.fetchTime, }; if (includeDetails) { const { audits } = await getDetailedAuditResults(url, "seo", device); return { ...baseData, audits }; } return baseData; }

Latest Blog Posts

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/danielsogl/lighthouse-mcp-server'

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