technical-seo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| seo_full_auditA | Run the full technical SEO checklist on a URL: rendering (server-rendered vs JS shell), HTTPS/SSL + redirect, page essentials (title, meta description, h1, canonical, Open Graph, mobile viewport, image lazy-loading/WebP/dimensions), caching headers, structured data (JSON-LD), sitemap.xml, robots.txt, and AI-crawler access. Returns a Markdown report with ✅/⚠️/❌ per check (or structured JSON with output: 'json', or a shareable HTML file with output: 'html'). Set compare_to_baseline: true to diff against the previous run. Does not include Lighthouse (use run_lighthouse separately — it is slower). |
| crawl_auditA | Crawl a site (seeded from sitemap.xml, sitemap-index aware; falls back to following internal links) and audit up to max_pages pages with a polite delay. Each page is fetched once and shared across checks. Aggregates: site-wide issues (same problem on >50% of pages — fix once in the template), broken internal links (404s), multi-hop redirect chains, duplicate titles/meta descriptions, orphan sitemap URLs, and remaining per-page issues. |
| check_renderingA | Fetch a page without executing JavaScript and detect whether it serves real server-rendered HTML or an empty client-side JS shell (hard for Google/AI to interpret). |
| check_httpsA | Verify the site serves https:// with a valid certificate and that http:// permanently (301) redirects to https://. |
| check_page_essentialsA | Check a page's title, meta description, single h1, canonical tag, Open Graph tags, responsive viewport meta (mobile-first), image lazy-loading, WebP/AVIF usage, and explicit image width/height (CLS risk). |
| check_cachingA | Inspect Cache-Control, content-encoding (gzip/brotli), ETag/Last-Modified headers and HTML document size for easy speed wins. |
| check_sitemapA | Find the site's sitemap the way search engines do (robots.txt Sitemap: lines, then /sitemap.xml, then sitemap-index.xml / sitemap_index.xml / wp-sitemap.xml), count entries, flag admin/cart/checkout/internal-search URLs, sample up to 10 URLs (from the first child sitemap for an index) to verify they return 200 without redirects, and check lastmod presence/freshness. |
| check_robotsA | Fetch /robots.txt, verify it exists and is valid (not an HTML page or redirect), references the sitemap, and does not block the entire site. |
| check_hreflangA | Audit a page's hreflang annotations for multi-language or multi-country targeting (e.g. US + Canada): validates BCP-47 values (catching en_US, en-UK and other common mistakes), requires a self-referencing annotation, checks for x-default, flags duplicate/conflicting values and relative hrefs, and verifies agrees. With verify_return_links: true it fetches each alternate and confirms it links back — missing return links are the most common reason Google ignores an otherwise-correct hreflang cluster. A single-language site correctly reports that hreflang is not needed. |
| check_structured_dataA | Extract and validate schema.org JSON-LD on a page (tolerates arrays and @graph). Checks Organization (incl. sameAs links), SoftwareApplication (name/description/applicationCategory/offers), FAQPage (Question/acceptedAnswer structure), and BreadcrumbList. Flags malformed JSON-LD blocks and provides a ready-to-paste Organization example when none exists. |
| check_ai_crawlersA | Report the effective robots.txt allow/block status for GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot, and the * default (flagging blanket Disallow: / without per-bot overrides). Checks for /llms.txt, and flags noindex/nofollow in both the X-Robots-Tag response header and — critical failures invisible to a plain robots.txt check. |
| check_url_structureA | Analyze one or more URLs against clean-URL best practices: ≤ ~60 chars, lowercase, hyphens not underscores, no accents/special chars, no messy query params, shallow hierarchy. Offline — no requests are made. |
| check_keyword_placementA | Analyze where target keywords appear on a page: (and whether it's front-loaded), URL path, meta description, H1, H2 subheadings, first ~100 words, image alt text, and keyword density (flags both thin usage and stuffing). Matching is plural/stem-tolerant ('freight broker' matches 'freight brokers'). Pass keywords as an array (one report section per keyword); a single keyword string is also accepted. Returns ✅/⚠️/❌ per placement. |
| run_lighthouseA | Run Google Lighthouse (performance + SEO categories) on a URL via npx. Reports scores and Core Web Vitals — LCP (≤ 2.5s), CLS (≤ 0.1), and INP (≤ 200ms; falls back to TBT when the lab run can't measure interactions) — plus top speed opportunities. Slow (~1-2 min); requires Chrome installed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
The aggregate tools (seo_full_audit, crawl_audit) clearly overlap in scope with the individual check_* tools, but descriptions explicitly state that full_audit excludes Lighthouse and that crawl_audit reuses a shared fetch, so the granular/aggregate boundary is legible. check_robots vs check_ai_crawlers could be confused, yet the description clarifies the latter covers meta/X-Robots-Tag and per-bot status. Only these mild overlaps prevent a 5.
Nearly all tools follow a snake_case verb_noun pattern (check_*, crawl_audit, run_lighthouse, seo_full_audit). 'check_' dominates uniformly, but the mixed prefixes (check_/crawl_/run_/seo_) and the irregular 'seo_full_audit' are minor deviations from a single convention.
14 tools sit squarely in the well-scoped 3-15 range. Each tool maps to a distinct technical SEO subsystem (robots, sitemap, hreflang, structured data, rendering, caching, etc.), so none feel redundant filler.
Coverage is broad: rendering, HTTPS/redirects, page essentials, caching, structured data, sitemap, robots/AI crawlers, hreflang, URL structure, keyword placement, Lighthouse, and a site crawl. Minor gaps remain (no field/CrUX data, backlink or log-file analysis), but core technical SEO workflows have no dead ends.