SEO MCP PRO
Provides tools for Cloudflare zone management, DNS records, analytics, cache purging, and firewall events.
Provides tools for managing Google Ads campaigns, ad groups, keywords, budgets, and performance analysis.
Provides tools for Google Analytics 4 accounts, properties, reports, realtime analytics, funnels, custom dimensions, audiences, data streams, and conversion events.
Provides tools for Google Search Console site performance, query analysis, sitemaps, URL inspection, and coverage reports.
Provides tools for Google Tag Manager accounts, containers, workspaces, tags, triggers, variables, and version management.
Provides tools for full Lighthouse audits via PageSpeed Insights API.
Provides tools for page performance analysis using PageSpeed Insights API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SEO MCP PRO run an SEO audit for example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Sandi Ads
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:httpfor the optional dashboardBuilt-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 ( | -- | Yes |
SEO Audit Report ( | -- | Yes |
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-XXXXOr 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-adsInstall from source
git clone https://github.com/bypixels/sandi-ads.git
cd sandi-ads
pnpm install
pnpm build
pnpm startDevelopment
pnpm dev # Development mode with hot reloadTool 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 |
|
Google Analytics 4 | Accounts, properties, reports, realtime, funnels, custom dimensions/metrics, audiences, data streams, conversion events |
|
Google Search Console | Sites, performance queries, top queries/pages, sitemaps, URL inspection, coverage |
|
Google Ads | Customers, campaigns, ad groups, keywords, budgets, performance, search terms, keyword ideas |
|
Google Business Profile | Accounts, locations, reviews, posts, insights, media |
|
Indexing API | Submit URLs for indexing, check status, batch operations |
|
PageSpeed Insights | Page performance analysis via PSI API |
|
CrUX | Chrome UX Report data queries and historical trends |
|
Core Web Vitals | LCP, INP, CLS aggregate reports |
|
Lighthouse | Full Lighthouse audits via PSI API |
|
Security | SSL analysis, security headers, Safe Browsing, comprehensive audits |
|
SEO Technical | Robots.txt, sitemaps, canonicals, redirects, structured data, headings, meta tags |
|
Monitoring | Uptime, response time, DNS lookup/propagation, certificate checks |
|
Accessibility | WCAG audits, contrast checking, image alt text validation |
|
Utilities | Tech stack detection, broken link scanning, WHOIS, headers, screenshots |
|
Cloudflare | Zones, DNS records, analytics, cache purge, firewall events |
|
Reports | Aggregated site health, SEO audit, executive summary |
|
Configuration
All configuration is handled through environment variables. Create a .env file in the project root:
Sandi Ads License
Variable | Description |
| Pro license key ( |
Google OAuth 2.0
Variable | Description |
| OAuth 2.0 client ID |
| OAuth 2.0 client secret |
| OAuth redirect URI |
| OAuth refresh token |
Google Service Account
Variable | Description |
| Path to service account JSON key file |
| Email address for domain-wide delegation |
API Keys
Variable | Description |
| PageSpeed Insights API key |
| Safe Browsing API key |
Google Ads
Variable | Description |
| Google Ads API developer token |
| Manager account customer ID |
Cloudflare
Variable | Description |
| Cloudflare API token (preferred) |
| Cloudflare account email (legacy auth) |
| Cloudflare global API key (legacy auth) |
Dashboard (Pro)
Variable | Description | Default |
| Enable the web dashboard |
|
| Dashboard HTTP port |
|
| API key for dashboard access | -- |
| Require authentication for dashboard |
|
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 dashboardOr 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 |
|
| Server health check |
|
| Authentication status |
|
| Cache statistics |
|
| Rate limit status per service |
Tools and Reports
Method | Endpoint | Description |
|
| List all available tools |
|
| Execute a tool (JSON body = tool input) |
|
| Dashboard overview for a URL |
|
| Site health report |
|
| SEO audit report |
Settings and Credentials
Method | Endpoint | Description |
|
| Configuration schema |
|
| Retrieve saved credentials |
|
| Save credentials |
|
| Validate credentials |
Monitoring
Method | Endpoint | Description |
|
| 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 definitionsDesign 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 |
| Install dependencies |
| Build with tsup (ESM) |
| Run the MCP server (stdio transport) |
| Run with web dashboard enabled (Pro) |
| Development mode with hot reload |
| Run tests with vitest |
| Lint with ESLint |
| TypeScript type checking |
OAuth Token Helper
To obtain a Google OAuth refresh token for local development:
node get-token.cjsThis 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
Available Tools
121 toolsa11y_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_broken_linksA
Check for broken links on a page. Tests internal and external links, identifies broken (4xx/5xx) and redirected (3xx) links.
Inputs: url (required), timeout, maxLinks, checkExternal.
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
Scored across 121 tools
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.
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.
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.
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
Related MCP Connectors
SEO research, Search Console, GA4 and PPC tools for Claude and ChatGPT.
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Keyword research, Google SERPs, backlinks, rank checks and SEO audits in Claude.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables 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.6MIT
- AlicenseAqualityCmaintenanceEnables 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.831 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables 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
- AlicenseAqualityCmaintenanceEnables 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.7414 npmMIT