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