Skip to main content
Glama
SEO MCP PRO

SEO MCP PRO

by bypixels

Sandi Ads

npm version CI License: MIT Node.js Version TypeScript

A Model Context Protocol (MCP) server that provides Claude with 121 tools for website operations, Google Marketing, SEO, performance analysis, security auditing, monitoring, accessibility testing, and more.


Table of Contents


Related MCP server: claude-ops-mcp

Overview

sandi-ads is a comprehensive MCP server built with TypeScript in strict mode. It connects Claude to the full spectrum of website management tasks -- from Google Analytics reporting and Tag Manager configuration to SSL analysis, Core Web Vitals monitoring, and WCAG accessibility audits.

  • 121 tools across 17 modules

  • Zero external runtime frameworks -- uses node:http for the optional dashboard

  • Built-in credential management with AES-256-GCM encryption (Pro)

  • Per-service rate limiting and in-memory caching


Free vs Pro

Sandi Ads follows a hybrid open source model. The core MCP tools are free and open source. Advanced reporting, the web dashboard, and credential management require a Pro license.

Feature

Free

Pro

Google Analytics 4 (GA4) tools

Yes

Yes

Google Tag Manager (GTM) tools

Yes

Yes

Google Search Console (GSC) tools

Yes

Yes

Google Ads tools

Yes

Yes

Google Business Profile tools

Yes

Yes

Indexing API tools

Yes

Yes

PageSpeed Insights / Lighthouse

Yes

Yes

Core Web Vitals / CrUX

Yes

Yes

Security auditing (SSL, headers, Safe Browsing)

Yes

Yes

SEO technical (robots, sitemaps, canonicals, etc.)

Yes

Yes

Monitoring (uptime, DNS, certificates)

Yes

Yes

Accessibility (WCAG, contrast, images)

Yes

Yes

Cloudflare integration

Yes

Yes

Utilities (tech detection, broken links, WHOIS)

Yes

Yes

Dashboard overview tool

Yes

Yes

Site Health Report (report_site_health)

--

Yes

SEO Audit Report (report_seo_audit)

--

Yes

Executive Summary (report_executive_summary)

--

Yes

Web Dashboard (browser UI on port 3737)

--

Yes

Encrypted Credential Store (AES-256-GCM)

--

Yes

SSE Real-time Monitoring

--

Yes

Activating Pro

Set your license key as an environment variable:

SANDI_ADS_KEY=SMCP-XXXX-XXXX-XXXX-XXXX

Or add it to your .env file. The server logs the active tier on startup.


Quick Start

Install from npm

# Run directly with npx (no install needed)
npx sandi-ads

# Or install globally
npm install -g sandi-ads
sandi-ads

Install from source

git clone https://github.com/bypixels/sandi-ads.git
cd sandi-ads
pnpm install
pnpm build
pnpm start

Development

pnpm dev         # Development mode with hot reload

Tool Modules

The server organizes its tools into 17 modules spanning 14 core categories:

Module

Description

Example Tools

Google Tag Manager

Accounts, containers, workspaces, tags, triggers, variables, versions

gtm_list_containers, gtm_create_tag, gtm_publish_version

Google Analytics 4

Accounts, properties, reports, realtime, funnels, custom dimensions/metrics, audiences, data streams, conversion events

ga4_run_report, ga4_run_realtime_report, ga4_run_funnel_report

Google Search Console

Sites, performance queries, top queries/pages, sitemaps, URL inspection, coverage

gsc_query_performance, gsc_top_queries, gsc_inspect_url

Google Ads

Customers, campaigns, ad groups, keywords, budgets, performance, search terms, keyword ideas

ads_list_campaigns, ads_create_campaign, ads_get_keyword_ideas

Google Business Profile

Accounts, locations, reviews, posts, insights, media

gbp_list_locations, gbp_reply_review, gbp_create_post

Indexing API

Submit URLs for indexing, check status, batch operations

indexing_publish, indexing_get_status, indexing_batch_publish

PageSpeed Insights

Page performance analysis via PSI API

psi_analyze

CrUX

Chrome UX Report data queries and historical trends

crux_query, crux_history

Core Web Vitals

LCP, INP, CLS aggregate reports

cwv_report

Lighthouse

Full Lighthouse audits via PSI API

lighthouse_audit

Security

SSL analysis, security headers, Safe Browsing, comprehensive audits

security_ssl_analyze, security_headers_check, security_audit

SEO Technical

Robots.txt, sitemaps, canonicals, redirects, structured data, headings, meta tags

seo_robots_analyze, seo_sitemap_analyze, seo_structured_data

Monitoring

Uptime, response time, DNS lookup/propagation, certificate checks

monitor_check_uptime, monitor_dns_lookup, monitor_certificate

Accessibility

WCAG audits, contrast checking, image alt text validation

a11y_audit, a11y_check_contrast, a11y_check_images

Utilities

Tech stack detection, broken link scanning, WHOIS, headers, screenshots

util_tech_detection, util_broken_links, util_whois_lookup

Cloudflare

Zones, DNS records, analytics, cache purge, firewall events

cf_get_zones, cf_create_dns_record, cf_purge_cache

Reports

Aggregated site health, SEO audit, executive summary

report_site_health, report_seo_audit, report_executive_summary


Configuration

All configuration is handled through environment variables. Create a .env file in the project root:

Sandi Ads License

Variable

Description

SANDI_ADS_KEY

Pro license key (SMCP-XXXX-XXXX-XXXX-XXXX) (the old SEO_MCP_PRO_KEY still works as a fallback)

Google OAuth 2.0

Variable

Description

GOOGLE_CLIENT_ID

OAuth 2.0 client ID

GOOGLE_CLIENT_SECRET

OAuth 2.0 client secret

GOOGLE_REDIRECT_URI

OAuth redirect URI

GOOGLE_REFRESH_TOKEN

OAuth refresh token

Google Service Account

Variable

Description

GOOGLE_SERVICE_ACCOUNT_KEY_FILE

Path to service account JSON key file

GOOGLE_SERVICE_ACCOUNT_IMPERSONATE

Email address for domain-wide delegation

API Keys

Variable

Description

GOOGLE_PAGESPEED_API_KEY

PageSpeed Insights API key

GOOGLE_SAFE_BROWSING_API_KEY

Safe Browsing API key

Google Ads

Variable

Description

GOOGLE_ADS_DEVELOPER_TOKEN

Google Ads API developer token

GOOGLE_ADS_LOGIN_CUSTOMER_ID

Manager account customer ID

Cloudflare

Variable

Description

CLOUDFLARE_API_TOKEN

Cloudflare API token (preferred)

CLOUDFLARE_EMAIL

Cloudflare account email (legacy auth)

CLOUDFLARE_API_KEY

Cloudflare global API key (legacy auth)

Dashboard (Pro)

Variable

Description

Default

DASHBOARD_ENABLED

Enable the web dashboard

false

DASHBOARD_PORT

Dashboard HTTP port

3737

DASHBOARD_API_KEY

API key for dashboard access

--

DASHBOARD_AUTH_REQUIRED

Require authentication for dashboard

false


Claude Desktop Integration

Add the server to your claude_desktop_config.json:

{
  "mcpServers": {
    "sandi-ads": {
      "command": "npx",
      "args": ["-y", "sandi-ads"],
      "env": {
        "GOOGLE_PAGESPEED_API_KEY": "your-api-key",
        "SANDI_ADS_KEY": "SMCP-XXXX-XXXX-XXXX-XXXX"
      }
    }
  }
}

Or if installed from source:

{
  "mcpServers": {
    "sandi-ads": {
      "command": "node",
      "args": ["/path/to/sandi-ads/dist/index.js"],
      "env": {
        "GOOGLE_CLIENT_ID": "your-client-id",
        "GOOGLE_CLIENT_SECRET": "your-client-secret",
        "GOOGLE_REFRESH_TOKEN": "your-refresh-token",
        "GOOGLE_PAGESPEED_API_KEY": "your-api-key"
      }
    }
  }
}

Once configured, Claude will have access to all available tools. Ask Claude to analyze your website's performance, check SEO issues, audit security headers, or manage your Google Marketing stack -- all through natural language.


Web Dashboard (Pro)

The server includes an optional self-contained web dashboard for browser-based access to all tools and reports. Requires a Pro license.

SANDI_ADS_KEY=SMCP-... pnpm dashboard

Or set DASHBOARD_ENABLED=true and SANDI_ADS_KEY in your .env file and run pnpm start.

The dashboard is available at http://localhost:3737 and provides:

  • Tool browser -- Browse and execute all available tools

  • Site reports -- Site health, SEO audit, and executive summary reports

  • Real-time monitoring -- Server-Sent Events for live status updates

  • Credential management -- Save and manage API keys through the UI (AES-256-GCM encrypted at rest)

  • Status overview -- Authentication state, cache statistics, rate limit status


Dashboard REST API

When the dashboard is enabled (Pro), the following HTTP endpoints are available:

Health and Status

Method

Endpoint

Description

GET

/api/health

Server health check

GET

/api/status/auth

Authentication status

GET

/api/status/cache

Cache statistics

GET

/api/status/rate-limits

Rate limit status per service

Tools and Reports

Method

Endpoint

Description

GET

/api/tools

List all available tools

POST

/api/tool/:name

Execute a tool (JSON body = tool input)

GET

/api/dashboard?url=X

Dashboard overview for a URL

GET

/api/report/site-health?url=X

Site health report

GET

/api/report/seo-audit?url=X

SEO audit report

Settings and Credentials

Method

Endpoint

Description

GET

/api/settings/schema

Configuration schema

GET

/api/settings/credentials

Retrieve saved credentials

POST

/api/settings/credentials

Save credentials

POST

/api/settings/credentials/validate

Validate credentials

Monitoring

Method

Endpoint

Description

GET

/api/sse?url=X

Server-Sent Events stream for real-time monitoring


Architecture

src/
├── index.ts                  # Entry point
├── server.ts                 # MCP server setup and tool registration
├── licensing/                # License management (free vs pro)
│   ├── index.ts              # Key validation, isPro(), getLicenseTier()
│   └── tiers.ts              # Pro tool and feature definitions
├── auth/                     # Authentication layer
│   ├── oauth.ts              # Google OAuth 2.0 flow
│   ├── service-account.ts    # Service account authentication
│   └── token-manager.ts      # Automatic token refresh
├── tools/                    # 14 tool modules
│   ├── google/               # GTM, GA4, GSC, Ads, Business Profile, PageSpeed, Indexing
│   ├── performance/          # Core Web Vitals, CrUX, Lighthouse
│   ├── security/             # SSL, headers, Safe Browsing
│   ├── seo-technical/        # Structured data, robots, sitemaps, canonicals
│   ├── accessibility/        # WCAG audits, contrast checking
│   ├── monitoring/           # Uptime, DNS, certificates
│   ├── integrations/         # Cloudflare
│   ├── utilities/            # Screenshots, tech detection, broken links
│   └── reports/              # Site health, SEO audit, executive summary
├── dashboard/                # Optional HTTP dashboard (Pro)
│   ├── http-server.ts        # node:http server (zero frameworks)
│   ├── routes/               # API, SSE, and settings route handlers
│   ├── services/             # Credential store (AES-256-GCM), data orchestration
│   └── ui/                   # Self-contained HTML dashboard
├── utils/                    # Shared utilities
│   ├── rate-limiter.ts       # Per-service rate limiting (bottleneck)
│   ├── cache.ts              # In-memory + file cache
│   └── logger.ts             # Structured JSON logging (winston)
├── config/                   # Google API scopes, default values
└── types/                    # TypeScript type definitions

Design Principles

  • Zod validation on all tool inputs and outputs

  • Per-service rate limiting via bottleneck (e.g., GTM: 50 req/min, GA4: 100 req/min, GSC: 1200 req/day)

  • In-memory caching with 5-minute TTL (1000-item limit) and file cache fallback (1-hour TTL)

  • Structured logging with Winston in JSON format

  • Automatic token refresh for all Google API interactions

  • stdio transport for Claude Desktop; optional HTTP transport for the dashboard


Commands

Command

Description

pnpm install

Install dependencies

pnpm build

Build with tsup (ESM)

pnpm start

Run the MCP server (stdio transport)

pnpm dashboard

Run with web dashboard enabled (Pro)

pnpm dev

Development mode with hot reload

pnpm test

Run tests with vitest

pnpm lint

Lint with ESLint

pnpm typecheck

TypeScript type checking


OAuth Token Helper

To obtain a Google OAuth refresh token for local development:

node get-token.cjs

This interactive script reads GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET from your .env file, opens a browser for the OAuth consent flow, and writes the resulting refresh token back to .env.


License

MIT

Available Tools

121 tools
a11y_auditC

Runs an accessibility audit on a webpage using Lighthouse accessibility checks

Inputs: url (required), standard, includeHidden.

a11y_check_contrastC

Checks color contrast ratios for WCAG compliance

Inputs: url, isBold, fontSize, background, +1 more.

a11y_check_imagesB

Checks images for proper alt text and accessibility

Inputs: url (required).

ads_account_summaryC

Gets a summary of account performance metrics

Inputs: dateRange (required), customerId (required).

ads_add_keywordsC

Adds keywords to an ad group

Inputs: keywords (required), adGroupId (required), customerId (required).

ads_campaign_performanceC

Gets campaign performance metrics for a date range

Inputs: dateRange (required), customerId (required), campaignId.

ads_create_budgetB

Creates a campaign budget that can be assigned to campaigns

Inputs: budget (required), customerId (required).

ads_create_campaignA

Creates a new Google Ads campaign with budget and bidding strategy

Inputs: campaign (required), customerId (required).

ads_get_campaignA

Gets details of a specific Google Ads campaign

Inputs: campaignId (required), customerId (required).

ads_get_customerB

Gets details of a specific Google Ads customer account

Inputs: customerId (required).

ads_get_keyword_ideasC

Gets keyword suggestions based on seed keywords or URL

Inputs: language (required), customerId (required), geoTargetConstants (required), urlSeed, +2 more.

ads_list_ad_groupsC

Lists ad groups in a Google Ads account

Inputs: customerId (required), limit, status, campaignId.

ads_list_budgetsB

Lists campaign budgets in a Google Ads account

Inputs: customerId (required), limit.

ads_list_campaignsC

Lists campaigns in a Google Ads account

Inputs: customerId (required), type, limit, status.

ads_list_customersA

Lists all Google Ads customer accounts accessible to the authenticated user

Inputs: no named parameters.

ads_list_keywordsC

Lists keywords in a Google Ads account

Inputs: customerId (required), limit, status, adGroupId, +1 more.

ads_search_term_reportC

Gets search terms report showing actual user queries

Inputs: dateRange (required), customerId (required), limit, adGroupId, +2 more.

ads_update_campaignC

Updates an existing Google Ads campaign settings

Inputs: updates (required), campaignId (required), customerId (required).

auth_statusA

Get current authentication status

Inputs: no named parameters.

cache_statsC

Get cache statistics

Inputs: no named parameters.

cf_create_dns_recordB

Creates a new DNS record in a Cloudflare zone

Inputs: name (required), type (required), zoneId (required), content (required), +3 more.

cf_firewall_eventsC

Gets firewall events for a Cloudflare zone

Inputs: zoneId (required), limit, since, until, +1 more.

cf_get_analyticsC

Gets analytics data for a Cloudflare zone

Inputs: since (required), zoneId (required), until.

cf_get_zonesB

Lists Cloudflare zones accessible to the authenticated user

Inputs: name, page, status, perPage.

cf_list_dns_recordsC

Lists DNS records for a Cloudflare zone

Inputs: zoneId (required), name, page, type, +1 more.

cf_purge_cacheC

Purges Cloudflare cache for a zone

Inputs: zoneId (required), tags, files, hosts, +2 more.

crux_historyC

Gets historical Chrome UX Report data for trend analysis

Inputs: url, origin, metrics, formFactor.

crux_queryC

Queries Chrome UX Report data for real-world performance metrics

Inputs: url, origin, metrics, formFactor.

cwv_reportC

Generates a comprehensive Core Web Vitals report for a URL

Inputs: url (required), includeHistory.

dashboard_overviewB

Generates a unified dashboard overview combining site health and SEO audit data with formatted markdown output

Inputs: url (required).

ga4_get_accountB

Gets details of a specific GA4 account

Inputs: accountId (required).

ga4_get_metadataA

Gets available dimensions and metrics for a GA4 property

Inputs: propertyId (required).

ga4_get_propertyB

Gets details of a specific GA4 property

Inputs: propertyId (required).

ga4_list_accountsA

Lists all Google Analytics 4 accounts accessible to the authenticated user

Inputs: pageSize, pageToken.

ga4_list_audiencesB

Lists configured audiences for a GA4 property

Inputs: propertyId (required), pageSize, pageToken.

ga4_list_conversion_eventsC

Lists conversion events for a GA4 property

Inputs: propertyId (required), pageSize, pageToken.

ga4_list_custom_dimensionsB

Lists custom dimensions defined for a GA4 property

Inputs: propertyId (required), pageSize, pageToken.

ga4_list_custom_metricsB

Lists custom metrics defined for a GA4 property

Inputs: propertyId (required), pageSize, pageToken.

ga4_list_data_streamsC

Lists data streams for a GA4 property

Inputs: propertyId (required), pageSize, pageToken.

ga4_list_propertiesA

Lists all GA4 properties, optionally filtered by account

Inputs: pageSize, accountId, pageToken.

ga4_run_funnel_reportC

Runs a funnel analysis report to understand user flow through defined steps

Inputs: funnel (required), dateRanges (required), propertyId (required), limit, +1 more.

ga4_run_realtime_reportB

Gets real-time data from GA4 (last 30 minutes)

Inputs: metrics (required), propertyId (required), limit, dimensions, +2 more.

ga4_run_reportC

Runs a custom report query against GA4 data

Inputs: metrics (required), dateRanges (required), propertyId (required), limit, +6 more.

ga4_traffic_overviewC

Gets a comprehensive traffic overview including sources, pages, devices, and geography

Inputs: dateRange (required), propertyId (required), compareTo.

gbp_create_postC

Creates a new post on a GBP location

Inputs: post (required), parent (required).

gbp_delete_review_replyB

Deletes a reply to a review

Inputs: name (required).

gbp_get_insightsC

Gets performance insights for a GBP location

Inputs: name (required), endTime, metrics, startTime.

gbp_get_locationB

Gets detailed information about a specific GBP location

Inputs: name (required).

gbp_list_accountsB

Lists all Google Business Profile accounts accessible to the authenticated user

Inputs: pageSize, pageToken.

gbp_list_locationsC

Lists all locations/businesses for a GBP account

Inputs: accountId (required), filter, pageSize, pageToken.

gbp_list_mediaC

Lists media items (photos, videos) for a GBP location

Inputs: parent (required), pageSize, pageToken.

gbp_list_postsB

Lists posts for a GBP location

Inputs: parent (required), pageSize, pageToken.

gbp_list_reviewsC

Lists reviews for a GBP location

Inputs: parent (required), orderBy, pageSize, pageToken.

gbp_performance_reportC

Generates a comprehensive performance report for a GBP location

Inputs: dateRange (required), locationName (required).

gbp_reply_reviewC

Replies to a review on a GBP location

Inputs: name (required), comment (required).

gbp_update_locationC

Updates a GBP location's information

Inputs: name (required), location (required), updateMask (required).

gbp_upload_mediaB

Uploads a photo or video to a GBP location

Inputs: parent (required), mediaItem (required).

gsc_coverage_reportA

Gets index coverage summary showing valid, error, warning, and excluded page counts with detailed issue breakdown

Inputs: siteUrl (required).

gsc_delete_sitemapB

Deletes a sitemap from Search Console

Inputs: siteUrl (required), feedpath (required).

gsc_get_siteB

Gets information about a specific site in Search Console

Inputs: siteUrl (required).

gsc_get_sitemapC

Gets detailed information about a specific sitemap

Inputs: siteUrl (required), feedpath (required).

gsc_inspect_urlB

Inspects a URL to see its index status, mobile usability, and rich results

Inputs: siteUrl (required), inspectionUrl (required), languageCode.

gsc_list_sitemapsA

Lists all sitemaps submitted for a site in Search Console

Inputs: siteUrl (required).

gsc_list_sitesA

Lists all sites in Google Search Console accessible to the authenticated user

Inputs: no named parameters.

gsc_query_performanceC

Queries search performance data from Google Search Console

Inputs: endDate (required), siteUrl (required), startDate (required), type, +6 more.

gsc_submit_sitemapA

Submits a sitemap for crawling in Search Console

Inputs: siteUrl (required), feedpath (required).

gsc_top_pagesC

Gets top performing pages for a site

Inputs: siteUrl (required), dateRange (required), limit.

gsc_top_queriesC

Gets top search queries for a site with summary statistics

Inputs: siteUrl (required), dateRange (required), limit, filters.

gtm_create_tagB

Creates a new tag in a GTM workspace

Inputs: tag (required), accountId (required), containerId (required), workspaceId (required).

gtm_create_triggerB

Creates a new trigger in a GTM workspace

Inputs: trigger (required), accountId (required), containerId (required), workspaceId (required).

gtm_create_variableC

Creates a new variable in a GTM workspace

Inputs: variable (required), accountId (required), containerId (required), workspaceId (required).

gtm_create_versionC

Creates a new container version from a workspace

Inputs: name (required), accountId (required), containerId (required), workspaceId (required), +1 more.

gtm_delete_tagB

Deletes a tag from a GTM workspace

Inputs: tagId (required), accountId (required), containerId (required), workspaceId (required).

gtm_delete_triggerB

Deletes a trigger from a GTM workspace

Inputs: accountId (required), triggerId (required), containerId (required), workspaceId (required).

gtm_delete_variableB

Deletes a variable from a GTM workspace

Inputs: accountId (required), variableId (required), containerId (required), workspaceId (required).

gtm_get_containerC

Gets detailed information about a specific GTM container

Inputs: accountId (required), containerId (required).

gtm_get_live_versionA

Gets the currently published (live) container version

Inputs: accountId (required), containerId (required).

gtm_get_tagA

Gets a specific tag configuration from GTM

Inputs: tagId (required), accountId (required), containerId (required), workspaceId (required).

gtm_get_triggerA

Gets a specific trigger configuration from GTM

Inputs: accountId (required), triggerId (required), containerId (required), workspaceId (required).

gtm_get_variableB

Gets a specific variable configuration from GTM

Inputs: accountId (required), variableId (required), containerId (required), workspaceId (required).

gtm_get_versionA

Gets a specific container version from GTM

Inputs: accountId (required), containerId (required), containerVersionId (required).

gtm_get_workspaceB

Gets detailed information about a specific GTM workspace

Inputs: accountId (required), containerId (required), workspaceId (required).

gtm_list_accountsB

Lists all Google Tag Manager accounts accessible to the authenticated user

Inputs: pageSize, pageToken.

gtm_list_containersB

Lists all containers within a GTM account

Inputs: accountId (required), pageToken.

gtm_list_tagsC

Lists all tags in a GTM workspace

Inputs: accountId (required), containerId (required), workspaceId (required), pageToken.

gtm_list_triggersC

Lists all triggers in a GTM workspace

Inputs: accountId (required), containerId (required), workspaceId (required), pageToken.

gtm_list_variablesB

Lists all variables in a GTM workspace

Inputs: accountId (required), containerId (required), workspaceId (required), pageToken.

gtm_list_versionsC

Lists all container versions in GTM

Inputs: accountId (required), containerId (required), pageToken, includeDeleted.

gtm_list_workspacesB

Lists all workspaces in a GTM container

Inputs: accountId (required), containerId (required), pageToken.

gtm_publish_versionB

Publishes a container version to make it live

Inputs: accountId (required), containerId (required), containerVersionId (required), fingerprint.

gtm_update_tagC

Updates an existing tag in GTM

Inputs: tag (required), tagId (required), accountId (required), containerId (required), +2 more.

gtm_update_triggerB

Updates an existing trigger in GTM

Inputs: trigger (required), accountId (required), triggerId (required), containerId (required), +2 more.

gtm_update_variableC

Updates an existing variable in GTM

Inputs: variable (required), accountId (required), variableId (required), containerId (required), +2 more.

indexing_batch_publishC

Batch notification for multiple URLs (max 100 per request)

Inputs: notifications (required).

indexing_get_statusC

Gets the notification status for a URL

Inputs: url (required).

indexing_publishC

Notifies Google about a new or updated URL for indexing

Inputs: url (required), type (required).

lighthouse_auditC

Runs a comprehensive Lighthouse audit for performance, accessibility, SEO, best practices, and PWA

Inputs: url (required), formFactor (required), categories, throttling.

monitor_certificateB

Check SSL/TLS certificate details including validity, expiration, issuer, and certificate chain.

Inputs: hostname (required), port.

monitor_check_uptimeC

Check if a URL is accessible and measure response time. Returns status, response time, headers, and SSL info.

Inputs: url (required), method, timeout, checkContent, +1 more.

monitor_dns_lookupB

Perform DNS lookup for a domain. Returns A, AAAA, MX, NS, TXT, CNAME, and SOA records.

Inputs: domain (required), recordTypes.

monitor_dns_propagationB

Check DNS propagation across multiple public DNS servers (Google, Cloudflare, OpenDNS, Quad9).

Inputs: domain (required), recordType, expectedValue.

monitor_response_timeA

Measure response time with multiple samples. Returns individual measurements and statistics.

Inputs: url (required), samples.

psi_analyzeC

Analyzes page performance with PageSpeed Insights API

Inputs: url (required), strategy (required), locale, categories.

rate_limit_statusA

Get rate limiter status for all services

Inputs: no named parameters.

security_auditB

Comprehensive security audit combining SSL analysis, security headers check, sensitive file exposure, and content security analysis. Returns an overall security grade with detailed findings.

Inputs: url (required), deep.

security_headers_checkB

Analyze HTTP security headers. Checks for HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, and other security headers. Returns a security grade and recommendations.

Inputs: url (required).

security_safe_browsingB

Checks URLs against Google Safe Browsing API for malware, phishing, and other threats

Inputs: urls (required), threatTypes, platformTypes.

security_ssl_analyzeA

Comprehensive SSL/TLS security analysis. Checks certificate validity, protocol support, cipher strength, and known vulnerabilities. Returns a security grade (A+ to F).

Inputs: hostname (required), port.

seo_canonical_checkA

Check canonical URL configuration. Validates both HTTP header and HTML link canonicals, detects conflicts and issues.

Inputs: url (required).

seo_heading_analysisA

Analyzes heading structure (H1-H6) for SEO best practices including hierarchy, H1 usage, and accessibility

Inputs: url (required).

seo_meta_analyzeB

Analyze page meta tags including title, description, Open Graph, Twitter Cards, robots, and canonical. Returns SEO issues and recommendations.

Inputs: url (required).

seo_redirect_checkA

Follow and analyze redirect chains. Identifies redirect loops, long chains, and mixed protocol issues.

Inputs: url (required), maxRedirects.

seo_robots_analyzeB

Analyze robots.txt file. Parses rules, sitemaps, and identifies SEO issues like blocking important paths or missing directives.

Inputs: url (required).

seo_robots_testB

Test if a specific URL is allowed or blocked by robots.txt rules for a given user agent.

Inputs: url (required), userAgent.

seo_sitemap_analyzeB

Analyze XML sitemap structure and content. Parses URLs, validates format, and identifies SEO issues like missing lastmod dates or URL limits.

Inputs: url (required), maxUrls.

seo_structured_dataA

Analyze structured data (JSON-LD, Microdata, RDFa). Extracts schema.org types, validates format, and provides recommendations for improving rich results.

Inputs: url (required).

util_headers_analysisB

Analyze HTTP response headers in detail. Provides information about caching, compression, security, cookies, and server configuration.

Inputs: url (required).

util_screenshotB

Captures a screenshot of a web page with configurable device, viewport, and format options

Inputs: url (required), delay, width, device, +4 more.

util_tech_detectionA

Detect technologies used by a website including CMS, frameworks, analytics, CDN, web servers, and programming languages. Returns detected technologies with confidence levels.

Inputs: url (required).

util_whois_lookupB

Look up WHOIS information for a domain. Returns registrar, creation date, expiry date, name servers, and domain status.

Inputs: domain (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.7/5.0

    Scored across 121 tools

    Disambiguation2/5

    Many tools are clearly scoped by prefix, but multiple pairs overlap in function, such as monitor_certificate vs security_ssl_analyze, util_headers_analysis vs security_headers_check, and ga4_traffic_overview vs ga4_run_report. An agent could easily select the wrong tool without reading edge-case details in descriptions.

    Naming Consistency4/5

    Most tools follow a consistent prefix_domain_action pattern, and list/get/create/update/delete naming is predictable within resource groups like GTM and GSC. A few outliers such as dashboard_overview, auth_status, cache_stats, lighthouse_audit, and cwv_report break the convention, but they are minor exceptions.

    Tool Count1/5

    At 121 tools, this is far beyond the score range where a tool set is easy to navigate, and it clearly exceeds the 50+ extreme-mismatch threshold. The count reflects many bolted-together integrations rather than a carefully curated SEO surface.

    Completeness3/5

    The set covers a broad range of SEO-adjacent workflows: technical audits, Search Console, analytics, ads, GTM, performance, and security. However, coverage is uneven—GA4 is mostly read-only, Cloudflare DNS only supports create/list, and core SEO functions like rank tracking or backlink analysis are absent.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables Claude to query Google Search Console performance data, inspect URL indexing status, submit URLs via IndexNow, and check title and meta-description lengths against Bing limits directly in chat.
      6
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables Claude to run safe, read-only diagnostics against servers and websites — certificate chains and expiry, HTTP status/redirects/security headers, DNS records, email authentication (SPF, DKIM, DMARC, MTA-STS, TLS-RPT) and sitemaps. Every check returns severity-tagged findings with concrete fixes, plus a 0-100 score and A-F grade, without any ability to modify the target.
      8
      31 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI assistants such as Claude, ChatGPT, Cursor, and Claude Code to run 25+ specialized SEO checks on any URL, generate XML sitemaps and robots.txt files, extract brand design elements, and audit technical SEO, content quality, mobile responsiveness, and security.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables AI assistants to diagnose and fix technical SEO, content and generative-engine-optimization issues in one conversation by bundling 102 tools spanning Google Search Console, Analytics 4, PageSpeed/CrUX, structured data, llms.txt, AI-crawler access, WordPress and GitHub.
      74
      14 npm
      MIT