Skip to main content
Glama
rog0x

mcp-seo-tools

by rog0x

mcp-seo-tools

An MCP (Model Context Protocol) server that gives AI agents a suite of SEO analysis tools. Analyze any public webpage for meta tags, heading structure, broken links, keyword density, page speed, and sitemap health — all without external API keys.

Tools

Tool

Description

seo_meta_analyze

Audit meta tags, Open Graph, and Twitter Card tags with scoring

seo_heading_check

Validate H1-H6 hierarchy, detect skipped levels and duplicates

seo_link_check

Find broken links, redirects, and missing anchor text

seo_keyword_density

Measure keyword frequency and check target keyword placement

seo_page_speed

Measure TTFB, load time, HTML size, and resource counts

seo_sitemap_parse

Parse sitemap.xml, check freshness, duplicates, and compliance

Related MCP server: seo-toolkit-mcp

Requirements

  • Node.js 18+

  • No API keys needed — all tools use direct HTTP requests and HTML parsing

Installation

git clone <repo-url>
cd mcp-seo-tools
npm install
npm run build

Usage with Claude Code

Add to your Claude Code MCP configuration:

claude mcp add seo-tools node D:/products/mcp-servers/mcp-seo-tools/dist/index.js

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "seo-tools": {
      "command": "node",
      "args": ["D:/products/mcp-servers/mcp-seo-tools/dist/index.js"]
    }
  }
}

Tool Details

seo_meta_analyze

Fetches a URL and inspects all meta-related elements. Checks title length (optimal: 30-60 chars), meta description length (optimal: 120-160 chars), canonical URL, viewport tag, language attribute, Open Graph completeness, and Twitter Card setup. Returns a 0-100 score.

Input: { "url": "https://example.com" }

seo_heading_check

Parses all headings on a page and builds a visual hierarchy tree. Flags: missing H1, multiple H1s, skipped heading levels, empty headings, overly long headings (>70 chars), and duplicate headings.

Input: { "url": "https://example.com" }

Extracts all anchor tags from a page, resolves relative URLs, deduplicates, and probes each link with a HEAD request (falling back to GET when needed). Classifies links as ok, broken, redirect, timeout, or error. Reports internal vs. external link ratio.

Input: { "url": "https://example.com", "max_links": 100 }

seo_keyword_density

Strips scripts, styles, and navigation, then tokenizes the remaining body text. Computes frequency and density for single words, bigrams, and trigrams (filtering stop words). When a target keyword is provided, checks whether it appears in the title, H1, meta description, and first paragraph.

Input: { "url": "https://example.com", "target_keyword": "seo tools" }

seo_page_speed

Measures Time to First Byte and total download time from the server's perspective. Counts external scripts, stylesheets, images, and iframes. Detects render-blocking scripts (missing async/defer), images without alt text or dimensions, missing compression, and absence of lazy loading.

Input: { "url": "https://example.com" }

seo_sitemap_parse

Accepts a sitemap URL or any page URL (automatically appends /sitemap.xml). Falls back to checking robots.txt for a Sitemap directive. Handles both <sitemapindex> and <urlset> formats. Validates URL count limits, lastmod freshness, duplicate entries, protocol consistency, and trailing slash patterns.

Input: { "url": "https://example.com" }

License

MIT

Available Tools

6 tools
seo_heading_checkA

Audit the heading hierarchy (H1-H6) of a page. Detects missing H1, skipped heading levels, duplicate headings, empty headings, and provides a visual hierarchy tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the page to audit

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description does disclose the tool performs a read-only audit and provides specific outputs including a visual hierarchy tree. However, it doesn't mention whether the tool requires network access, whether it returns scores/recommendations, rate limits, or how failures/timeouts are handled. For a read-only analysis tool the disclosure is decent but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tight sentence that packs the purpose, specific checks performed, and output artifact. Every clause earns its place; there is zero repetition or filler. It is front-loaded with the primary purpose and enumerates the detection capabilities efficiently. The 90s word count is appropriate given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only audit tool, the description adequately covers purpose, detected issues, and output format. It doesn't have an output schema, so the description compensates by stating the visual hierarchy tree output. It could benefit from noting how users should interpret the results or whether a score is returned, but the tool is relatively simple and the provided coverage is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents 'url' as the full URL of the page to audit. The description's behavioral detail about what the URL is used for (auditing heading hierarchy) adds context beyond the schema. With full schema coverage and a single simple parameter, the baseline of 3 applies and the description adds marginal value about the screening purpose, warranting a slightly higher score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool audits heading hierarchy (H1-H6) with a specific verb ('Audit') and resource ('heading hierarchy of a page'). It enumerates the specific checks performed (missing H1, skipped levels, duplicates, empty headings) and the provided output (visual hierarchy tree). This is distinct from sibling SEO tools which handle meta, links, keywords, speed, and sitemaps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this is for heading structure auditing and is distinct from siblings like seo_meta_analyze and seo_link_check. However, it doesn't explicitly state when to use it vs alternatives, nor does it provide exclusions or prerequisites (e.g., page must be publicly accessible, needs HTML). The usage context is implied by the SEO tool family but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seo_keyword_densityA

Analyze keyword density and distribution across a page. Returns top single words, two-word and three-word phrases with density percentages. Optionally checks placement of a target keyword in title, H1, meta description, and first paragraph.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the page to analyze
target_keywordNoOptional target keyword to check placement and density for

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the output (top phrases with density percentages) and the optional target keyword placement check across specific locations (title, H1, meta description, first paragraph). However, it doesn't disclose whether this is a read-only operation, rate limits, or what happens with dynamically rendered content.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary purpose, and efficient. The second sentence adds the optional feature concisely. No wasted words, though slightly more structure (explicit differentiation from siblings) could have helped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and a 2-param tool, the description covers the operation reasonably. It explains output format and the optional keyword placement check across named locations. However, for an analysis tool it could disclose more about output granularity, limits on phrase frequency counts, or how the page is fetched (which could matter if the target is a JS-rendered page).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (url and target_keyword) are already documented. The description adds context about what 'url' analyzes (a page) and clarifies that target_keyword checks 'placement and density' in specific locations, which adds meaning beyond the schema's generic 'check placement and density for' phrasing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Analyze') with a clear resource ('keyword density and distribution across a page') and explicitly lists return values (top single-word, two-word, three-word phrases with density percentages). It distinguishes itself from sibling SEO tools (meta, heading, link, speed, sitemap) by focusing on keyword density.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states what the tool does and mentions the optional target keyword feature, but does not explicitly state when to use this vs. alternatives like seo_meta_analyze or seo_heading_check. Usage context is implied (analyze a page's keywords) rather than explicitly delimited with exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seo_meta_analyzeA

Analyze a page's meta tags, Open Graph tags, and Twitter Card tags. Returns an SEO score with actionable recommendations for title, description, social sharing tags, and other meta elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the page to analyze (e.g. https://example.com)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It states the tool analyzes and returns an SEO score with actionable recommendations, which is reasonably transparent about what it produces. However, for an analysis tool with no annotations, it doesn't disclose potential cost (external HTTP requests), rate limits, or whether the page must be publicly accessible — leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, efficient and front-loaded. The first sentence states exactly what is analyzed, and the second states the output format. No wasted words, though it could arguably be one sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter analysis tool with no output schema and no annotations, the description is fairly complete. It explains the analysis scope and what the return value (SEO score + actionable recommendations) looks like. It's adequate for an agent to invoke correctly, though it could benefit from noting what happens with non-HTML or inaccessible pages.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single URL parameter that's well-described as 'Full URL of the page to analyze.' The description adds context by signaling what analysis will be performed on that URL (meta/OG/Twitter tags). With full schema coverage, this is a strong baseline, and the description reinforces the parameter's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb+resource ('Analyze a page's meta tags, Open Graph tags, and Twitter Card tags') and differentiates via its SEO analysis scope. It's distinct from sibling tools focused on headings, links, keywords, speed, and sitemaps, though it doesn't explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for SEO meta analysis but provides no explicit guidance on when to use it versus alternatives. It doesn't mention exclusions or when not to use it. The sibling tools (heading check, link check, keyword density) suggest a broader SEO toolkit context, but the description doesn't leverage that to guide tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seo_page_speedB

Measure basic page speed metrics including Time to First Byte, total load time, HTML size, and resource counts (scripts, stylesheets, images). Identifies render-blocking resources and missing optimizations.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the page to measure

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates this is a read-only measurement operation (no side effects implied), and lists the metrics and outputs including render-blocking analysis. However, it doesn't state anything about rate limits, whether the tool makes HTTP requests to the target URL, timeouts, or whether certain page characteristics would fail. It adds reasonable value but has gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and reasonably efficient. The first sentence lists concrete metrics; the second adds a value-add about render-blocking and optimization detection. No wasted words, but the front-loading is good. It's slightly dense but acceptable for the informational value delivered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter measurement tool, the description is reasonably complete. It lists what metrics are measured and what optimizations are identified. However, it doesn't describe the output format, units, or whether results are comparable across runs. With no output schema and no annotations, the description could be more complete about what a successful result contains (e.g., numeric values, units like seconds/bytes). Mild gaps exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single parameter (url) is fully documented in the schema. The description adds 'Full URL of the page to measure' context via the schema. For a single-parameter tool, the description's mention of what specific metrics are measured adds useful context about what the url parameter's measurement entails, exceeding the bare schema requirements. Baseline 3 applies with 100% coverage, and the described metrics add mild additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool measures page speed metrics with a specific verb ('Measure') and names specific resources ('Time to First Byte, total load time, HTML size, resource counts'). It identifies distinct capabilities (render-blocking resources, missing optimizations) that distinguish it from sibling SEO analysis tools. It doesn't name a sibling explicitly, but the purpose is well-scoped to page speed specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no clear guidance on when to use this tool versus alternatives like seo_meta_analyze, seo_heading_check, or seo_keyword_density. It doesn't state exclusions, prerequisites (e.g., URL must be publicly accessible), or scenarios where it's preferred. The context is only implied by the general domain of SEO analysis shared across siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seo_sitemap_parseA

Parse and analyze a website's sitemap.xml. Handles both sitemap indexes and URL sets. Reports URL counts, lastmod freshness, duplicate URLs, protocol consistency, and sitemap compliance issues. Automatically tries /sitemap.xml and falls back to robots.txt.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the sitemap or any page on the site (will try /sitemap.xml automatically)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions automatic fallback behavior (/sitemap.xml, then robots.txt) and handles both sitemap index and URL set types. However, it doesn't disclose things like rate limits, network behavior, or what happens on missing sitemaps, though the fallback note does provide meaningful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero waste: the first states core purpose and capabilities, the second enumerates analysis dimensions, the third explains input flexibility and fallback behavior. Every sentence earns its place and information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema exists, the description lists the analysis dimensions (counts, freshness, duplicates, protocol, compliance) which helps the agent anticipate return content. With 1 simple parameter, no nested objects, and no annotations, the description is reasonably complete for a single-input read-only analysis tool. Could mention return format slightly more explicitly but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the sole parameter 'url' is well-documented, including the note that it accepts any page URL. The description adds the automatic /sitemap.xml discovery behavior on top of the schema, providing some value beyond what's already there. Baseline 3 is appropriate since schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool parses and analyzes a website's sitemap.xml, listing specific capabilities (URL counts, lastmod freshness, duplicates, protocol consistency, compliance). The verb 'parse and analyze' plus the resource 'sitemap.xml' is specific and distinct from sibling SEO tools which target meta tags, headings, links, keywords, and page speed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the tool automatically tries /sitemap.xml and falls back to robots.txt, which clarifies input requirements (can provide any page URL). It doesn't explicitly state when not to use this vs alternatives, but the specialized sitemap focus makes the use case clear given the sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct SEO dimension — meta tags, heading hierarchy, links, keyword density, page speed, and sitemaps. There is no overlap; an agent auditing a site could cleanly select one tool per concern without ambiguity.

Naming Consistency4/5

All tools follow a consistent 'seo_<feature>_<action>' pattern with clear, descriptive verbs (analyze, check, parse, measure). The only minor inconsistency is that actions vary (analyze/check/measure/parse) rather than a uniform verb, but the pattern is still highly predictable.

Tool Count5/5

Six tools is a well-scoped set for SEO tooling. Each tool covers a major SEO pillar without redundancy or bloat, sitting comfortably in the ideal 3-15 range for a domain-specific server.

Completeness3/5

The audit surface covers the major on-page SEO areas well, but there are notable gaps: no tool for robots.txt analysis, structured data/schema validation, canonical/indexability checks, or backlink/social signals. The sitemap tool references robots.txt as a fallback but does not analyze it directly, leaving some common SEO audit tasks unaddressed.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for on-page SEO auditing and JSON-LD schema validation, providing tools for full SEO audit, schema validation, heading hierarchy, and image audit without requiring API keys.
    4
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    SEO toolkit MCP server for analyzing meta tags, robots.txt, sitemaps, keyword density, readability, and heading structure from any AI assistant that supports MCP.
    6
    16
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An SEO MCP server providing free SEO tools including on-page audits, broken link checks, sitemap analysis, and keyword ideas via Google Suggest, all without requiring an API key.
    8
    34
    5
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    An MCP server providing 20 SEO tools including coverage reports, supporting both stdio and HTTP modes for data-driven SEO analysis.
    20

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/rog0x/mcp-seo-tools'

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