FastMCP server for comprehensive SEO analysis using DataForSEO API, providing tools for OnPage analysis, keyword research, SERP analysis, competitor comparison, content analysis, and internal link graph optimization using PageRank and NetworkX algorithms.
The server defines 7 SEO analysis tools with complete input schemas and descriptions, but falls short of production-grade quality in several critical areas. Tool names are action-verb-based and reasonably clear (analyze_*, get_*, generate_*), but descriptions are generic and lack actionable context for LLM selection. Parameter descriptions exist but are minimal (10-30 chars typical), failing to explain format constraints, dependencies, or valid ranges. Output schemas are not documented in the provided source. No evidence of error handling guidance, validation rules, or recovery paths. The tools appear to wrap DataForSEO API calls directly without abstracting complexity or matching the chat data model, users would need to understand location codes and language codes rather than geographic names. Security concern: API credentials are likely injected via environment, but no evidence of audit logging or permission gates visible in source.
Comprehensive centrality analysis for authority identification. Analyzes multiple centrality measures to identify: - Authority pages (high eigenvector/Katz centrality) - Bridge pages (high betweenness centrality) - Hub pages (high degree centrality) - Accessible pages (high closeness centrality) Returns rankings, insights, and strategic recommendations.
Analyze content gaps between your domain and a competitor. Identifies: - Keywords competitors rank for that you don't - Content topics to target - Low-competition content opportunities
Analyze content for keyword optimization and semantic relevance. Provides content analysis including: - Target keyword optimization status - Semantic keyword analysis - Readability metrics - Content length recommendations - Cannibalization detection across content
Perform comprehensive domain analysis including ranking keywords and competitors. Provides domain analysis including: - Organic keywords ranking - Top performing pages - Competitor identification - Traffic estimation - Backlink metrics
Analyze keywords for search volume, CPC, and competition metrics. Provides keyword research data including: - Monthly search volume - Cost-per-click estimates - Competition level - Related keyword suggestions
Analyze PageRank for a website's internal link structure. This tool crawls a website, builds an internal link graph using Kuzu database, and calculates PageRank scores to identify authoritative pages. Returns comprehensive analysis including pillar pages, orphaned pages, and optimization recommendations.
Parameter descriptions lack format, range, and constraint information. 'location' parameter (appears in 4 tools) is described only as 'Geographic location for [task] analysis', no guidance on accepted format (country name, ISO code, city), no examples, no validation rules. LLMs will guess and pass invalid values.
Tool descriptions lack context for LLM selection. 'Analyze keywords for search volume and competition data' is a literal restatement of the tool name, it does not explain WHEN to call this instead of analyze_serp or analyze_domain, what prerequisites exist, or what structure is returned. LLMs cannot distinguish overlapping tools.
Output schemas not documented in source. Tool definitions specify input parameters with types and descriptions, but no corresponding output schema is visible. LLMs cannot plan downstream steps or extract required fields (e.g., what IDs does analyze_keywords return? Is it paginated?). Baselines require 100% of A+ tools to have documented return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 0 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 34 | - | v1 |
Analyze SERP results for a keyword including rankings and competition. Provides SERP data including: - Organic search results with rankings - Featured snippets and rich results - Paid search results - Related queries - Search intent analysis
Build internal link graph for a website. Crawls website pages and creates a graph database of internal links for subsequent PageRank analysis and link optimization. Returns graph statistics and basic link structure metrics.
Compare your domain against competitor domains. Provides competitive analysis including: - Shared keywords between domains - Keywords unique to each competitor - Traffic comparison estimates - Ranking position differences
Content community detection for topic clustering. Identifies content clusters and topic groups using community detection: - Louvain algorithm for high-quality communities - Greedy modularity for interpretable clusters - Content category analysis - Internal vs external linking patterns Returns community structure, topic insights, and content strategy recommendations.
Find orphaned pages with no incoming internal links. Identifies pages that have no incoming links and are therefore difficult to discover and missing potential link equity.
Identify pillar pages with high PageRank authority. Requires an existing PageRank analysis. Identifies the most authoritative pages based on PageRank scores for content strategy and navigation optimization.
Get OnPage SEO analysis results and summary. Returns comprehensive technical SEO audit including: - Overall site health score - Critical issues requiring immediate attention - Technical SEO recommendations - Page-by-page analysis summary
Start comprehensive OnPage SEO analysis for a website. Analyzes technical SEO factors including: - Title tags, meta descriptions, headers - Internal/external links - Image optimization - Page load times - Duplicate content - Broken pages and redirects
Get duplicate content analysis from OnPage audit. Identifies and reports: - Duplicate title tags - Duplicate meta descriptions - Duplicate H1 tags - Content cannibalization issues
Get detailed OnPage analysis for individual pages. Provides page-level SEO insights including: - Title and meta tag optimization - Content quality metrics - Internal linking structure - Technical issues per page
Generate internal link optimization recommendations. Analyzes current link structure and provides specific recommendations for improving internal linking, link equity distribution, and page discovery.
No error handling or recovery guidance visible. If a tool fails (API error, rate limit, invalid input), the source shows no evidence of categorization (retryable vs user-fixable vs fatal) or actionable recovery suggestions. Agents will not know how to respond to failures.
Location and language parameters accept strings with no enum or pattern constraint. 'language': {'type': 'string', 'description': 'Language for keyword analysis'}, what values are valid? 'en', 'eng', 'English'? LLMs will hallucinate invalid codes and waste API calls. Should use enum or reference a constraint mapping.
No pagination or result limit guidance. analyze_keywords accepts an array of keywords with no max length specified. analyze_onpage accepts crawl_pages with no bounds. LLMs can request 10,000 pages or 1000 keywords, causing timeouts or API quota exhaustion. Baselines require explicit limits.
Tool names suggest the API is directly exposed rather than abstracted. Names like 'analyze_keywords' and 'analyze_serp' match DataForSEO domain language, not chat language. A user would say 'What keywords should I target?' or 'Who ranks for my keywords?', not 'Call analyze_keywords.' Abstraction layer missing.
No mutual exclusivity or dependency documentation. generate_seo_report's 'include_sections' parameter is an array with no documentation of which combinations are valid or whether some sections require others (e.g., does 'recommendations' require 'on_page' analysis?). LLMs will guess.
Boolean parameters lack actionable descriptions. 'include_suggestions': {'type': 'boolean', 'description': 'Include related keyword suggestions'}, unclear what cost/performance implications exist, whether this adds significant latency, or what a 'suggestion' looks like. LLMs cannot reason about trade-offs.