npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

wp-seo-toolkit-mcp

v1.1.0

Published

WordPress SEO Toolkit MCP server for Claude Code / Claude Desktop

Readme

wp-seo-toolkit-mcp

WordPress SEO Toolkit for Claude Code and Claude Desktop

npm version License: MIT Node.js

An MCP (Model Context Protocol) server that gives Claude 10 SEO tools for auditing, analyzing, and optimizing WordPress sites. Runs locally. No external APIs. Your credentials never leave your machine.


Tools

| # | Tool | Tier | Description | |---|------|------|-------------| | 1 | audit_page_seo | Free | Full SEO audit: title, meta, headings, images, links, canonical, robots, schema. Scored report with recommendations. | | 2 | check_broken_links | Free | Crawl all links on a page and report 404s, 500s, and timeouts with anchor text. | | 3 | get_site_health | Free | WordPress site health check: WP/PHP version, plugins, themes, SSL, debug mode. | | 4 | generate_meta | Free | Generate optimized title tag, meta description, and OG tags from a URL or text. Rule-based, no AI calls. | | 5 | check_schema_markup | Free | Validate JSON-LD and microdata structured data. Checks required properties for 16+ schema.org types. | | 6 | analyze_content | Premium | Deep content analysis: readability (Flesch-Kincaid), keyword density, heading structure, link ratio. | | 7 | compare_competitors | Premium | Side-by-side SEO comparison of 2-5 URLs. Finds the winner and gaps. | | 8 | find_keyword_opps | Premium | Detect keyword cannibalization, thin content, and missing keyword opportunities. | | 9 | check_redirects | Premium | Follow redirect chains. Detect loops, excessive hops, and mixed HTTP/HTTPS. | | 10 | bulk_audit | Premium | Audit multiple URLs from a sitemap or list. Aggregated report with common issues. |


Quick Start

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "wp-seo-toolkit": {
      "command": "npx",
      "args": ["-y", "wp-seo-toolkit-mcp"],
      "env": {
        "WORDPRESS_URL": "https://yoursite.com"
      }
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "wp-seo-toolkit": {
      "command": "npx",
      "args": ["-y", "wp-seo-toolkit-mcp"],
      "env": {
        "WORDPRESS_URL": "https://yoursite.com",
        "WORDPRESS_USERNAME": "your-username",
        "WORDPRESS_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
      }
    }
  }
}

Then ask Claude: "Run an SEO audit on my homepage" or "Check for broken links on /blog".


Configuration

| Variable | Required | Default | Description | |----------|----------|---------|-------------| | WORDPRESS_URL | Yes | -- | Your WordPress site URL (e.g. https://yoursite.com) | | WORDPRESS_USERNAME | No | -- | WordPress username for authenticated endpoints (get_site_health) | | WORDPRESS_APP_PASSWORD | No | -- | WordPress Application Password | | WC_CONSUMER_KEY | No | -- | WooCommerce consumer key (reserved for future use) | | WC_CONSUMER_SECRET | No | -- | WooCommerce consumer secret (reserved for future use) | | LICENSE_KEY | No | -- | Premium license key. Format: WPSEO-XXXX-XXXX-XXXX | | LICENSE_EMAIL | No | -- | Email address tied to your license key | | REQUEST_TIMEOUT_MS | No | 10000 | HTTP request timeout in milliseconds | | MAX_CONCURRENT_REQUESTS | No | 5 | Maximum parallel HTTP requests for bulk operations |


Tools Reference

audit_page_seo (Free)

Run a full SEO audit on any URL. Returns a scored report covering title, meta description, headings, images, links, canonical URL, robots directives, and JSON-LD schema.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | url | string | Yes | -- | URL to audit | | includeLinks | boolean | No | true | Include link analysis | | includeImages | boolean | No | true | Include image analysis |

Example: "Audit the SEO of https://mysite.com/about"


check_broken_links (Free)

Crawl all links on a page and report broken ones (404, 500, timeouts) with their anchor text and source location.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | url | string | Yes | -- | Page URL to check | | depth | number | No | 0 | Crawl depth (0 = current page only, 1 = follow internal links) | | timeout | number | No | 8000 | Per-link timeout in milliseconds |

Example: "Find broken links on my blog index page"


get_site_health (Free)

Check WordPress site health: WP version, PHP version, active/inactive plugins, themes, SSL status, and debug mode. Requires WordPress authentication via WORDPRESS_USERNAME and WORDPRESS_APP_PASSWORD.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | wordpressUrl | string | No | WORDPRESS_URL env var | Override the target WordPress URL |

Example: "Check my WordPress site health"


generate_meta (Free)

Generate optimized title tag, meta description, Open Graph tags, and Twitter card tags from a URL or raw text content. Entirely rule-based -- no external AI API calls.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | url | string | No | -- | URL to extract content from | | content | string | No | -- | Raw text content (alternative to URL) | | primaryKeyword | string | No | -- | Target keyword to prioritize | | targetCharLimit | number | No | 60 | Character limit for generated title |

Example: "Generate meta tags for my /services page targeting 'web design'"


check_schema_markup (Free)

Validate JSON-LD and microdata structured data on a page. Checks required properties for 16+ schema.org types including Article, Product, LocalBusiness, FAQPage, and more.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | url | string | Yes | -- | URL to validate |

Example: "Check the schema markup on my product page"


analyze_content (Premium)

Deep content analysis: Flesch-Kincaid readability score, keyword density, heading structure, internal/external link ratio, image optimization, paragraph count, and average sentence length.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | url | string | Yes | -- | URL to analyze | | targetKeyword | string | No | -- | Keyword to track density for |

Example: "Analyze the content quality of my latest blog post"


compare_competitors (Premium)

Compare SEO metrics of 2-5 URLs side-by-side: title, meta description, word count, headings, schema types, links, images, and load time hints. Identifies the winner and opportunities.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | urls | string[] | Yes | -- | 2-5 URLs to compare | | primaryUrl | string | No | -- | Your URL (highlighted in comparison) |

Example: "Compare my /pricing page against these 3 competitor URLs"


find_keyword_opps (Premium)

Analyze pages to find keyword cannibalization (multiple pages targeting the same keyword), thin content, and missing keyword opportunities. Accepts a URL list or sitemap.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | urls | string[] | No | -- | List of URLs to analyze | | sitemapUrl | string | No | -- | Sitemap URL (alternative to URL list) |

Example: "Find keyword opportunities across my sitemap"


check_redirects (Premium)

Follow redirect chains for a list of URLs. Detects redirect loops, excessive hops, and mixed HTTP/HTTPS protocol switches.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | urls | string[] | Yes | -- | URLs to check | | maxHops | number | No | 10 | Maximum redirect hops before stopping (1-20) |

Example: "Check redirect chains for my old blog URLs"


bulk_audit (Premium)

Run SEO audits on multiple URLs from a sitemap or URL list. Returns an aggregated report with average score, common issues across pages, and per-page summaries.

Parameters:

| Name | Type | Required | Default | Description | |------|------|----------|---------|-------------| | urls | string[] | No | -- | List of URLs to audit | | sitemapUrl | string | No | -- | Sitemap URL (alternative to URL list) | | maxPages | number | No | 50 | Maximum pages to audit (1-200) | | concurrency | number | No | 3 | Parallel audit workers (1-10) |

Example: "Bulk audit all pages in my sitemap"


Free vs Premium

Free Tier (5 tools, no license required)

  • Full page SEO audits with scored reports
  • Broken link detection
  • WordPress site health monitoring
  • Meta tag generation
  • Schema markup validation

Works out of the box with just WORDPRESS_URL.

Premium Tier (all 10 tools)

Everything in Free, plus:

  • Deep content and readability analysis
  • Competitor SEO comparison
  • Keyword cannibalization and opportunity detection
  • Redirect chain analysis
  • Bulk multi-page auditing from sitemaps

Get a license key: wowhow.cloud/products/wp-seo-toolkit-mcp

Set the LICENSE_KEY and LICENSE_EMAIL environment variables to unlock premium tools. Each key is tied to the email address used at purchase.


Requirements

  • Node.js 18 or later
  • A WordPress site (any hosting provider)
  • WordPress Application Password for authenticated tools (get_site_health)

Security

  • All data is processed locally on your machine
  • No external API calls -- the server only communicates with your WordPress site
  • Credentials are passed via environment variables and never transmitted to third parties
  • The MCP server runs as a local stdio process with no network listeners

Support


License

MIT -- see LICENSE for details.

Built by WOWHOW