SEO Research MCP
This server enables AI assistants to perform practical SEO research through the following capabilities:
Backlink Analysis: Retrieve backlinks for a domain (with title, URL, domain rating), get a full domain overview (rating, total backlinks, referring domains), and compare SEO metrics across 2–5 domains.
Keyword Research: Generate keyword and question ideas from a seed keyword (filterable by country and search engine), check keyword difficulty scores, and get SERP snapshots.
AI Search Queries: Generate AI-powered query ideas based on a keyword and specific search intents (informational, commercial, transactional, navigational).
Traffic Estimation: Estimate organic search traffic for a domain or URL, including historical data, top pages, top countries, and associated keywords.
Backlink Opportunities: Identify backlink sources used by competitors that are missing from a target domain's profile.
SEO Content Briefs: Create AI-assisted content briefs combining keyword difficulty, SERP analysis, AI search queries, and recommended content angles.
Provides SEO research capabilities including keyword difficulty analysis, keyword generation, traffic estimation, and backlink analysis using data from search engines.
Click on "Install 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 Research MCPwhat are the backlinks for competitor.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.
DataSEO MCP
Give your AI assistant real SEO data. DataSEO MCP is a Model Context Protocol server that lets Claude, Cursor, and other MCP clients pull backlinks, keyword difficulty, traffic estimates, and keyword ideas from Ahrefs' free tools — plus optional AI query planning — just by asking in plain English.
No dashboards, no CSV exports. Ask "who links to suparank.io?" and get an answer inside your chat.
For educational and research use. It automates third-party services (Ahrefs, CapSolver, Anti-Captcha, OpenRouter). You are responsible for complying with their terms of service.
What you can ask
Talk to it in natural language — the assistant picks the right tool.
Ask something like… | Tool it uses | You get |
"Who links to suparank.io?" |
| Domain rating, referring domains, top backlink rows |
"Give me keyword ideas for AI SEO tools" |
| Keyword and question ideas |
"How much organic traffic does suparank.io get?" |
| Monthly traffic, top pages, countries, keywords |
"How hard is it to rank for 'AI SEO tools'?" |
| KD score + the live SERP |
"Generate AI search queries for 'AI SEO audit'" |
| Queries grouped by search intent |
"Give me an SEO overview of suparank.io" |
| Backlink + traffic summary in one call |
"Compare suparank.io with its competitors" |
| 2–5 domains side by side |
"Find backlink gaps for suparank.io" |
| Sources linking to competitors but not you |
"Write a content brief for 'AI SEO audit'" |
| SERP data + AI-assisted content angles |
Maintained by Ege Bese. Built for the AI SEO and rank-tracking workflows behind Suparank.
Related MCP server: SE Ranking MCP Server
Quick start
Run it with no install using uv:
export CAPSOLVER_API_KEY="your-capsolver-key"
uvx --python 3.10 dataseo-mcpThat's enough to use every SEO tool. See MCP Setup to wire it into your assistant.
For local development:
git clone https://github.com/egebese/dataseo-mcp.git
cd dataseo-mcp
uv sync
uv run dataseo-mcpThe legacy seo-mcp command still works as an alias.
Configuration
One CAPTCHA provider is required — it's how the Ahrefs-backed tools clear the Turnstile challenge:
export CAPSOLVER_API_KEY="your-capsolver-key"
# or
export ANTICAPTCHA_API_KEY="your-anticaptcha-key"If both are set, CapSolver is tried first and Anti-Captcha is the fallback.
AI tools are optional. ai_search_queries and seo_content_brief need
OpenRouter; without it, the other tools still work and AI output is marked
unavailable:
export OPENROUTER_API_KEY="your-openrouter-key"
export OPENROUTER_MODEL="openai/gpt-4o-mini" # optionalRuntime overrides:
Variable | Default | Purpose |
|
| Signature cache location |
|
| HTTP timeout in seconds |
|
| CAPTCHA polling cap |
|
| OpenAI-compatible AI endpoint |
MCP Setup
Claude Code:
claude mcp add dataseo --scope user -- uvx --python 3.10 dataseo-mcpClaude Desktop / Cursor (claude_desktop_config.json or equivalent):
{
"mcpServers": {
"dataseo": {
"command": "uvx",
"args": ["--python", "3.10", "dataseo-mcp"],
"env": {
"CAPSOLVER_API_KEY": "YOUR_CAPSOLVER_KEY",
"OPENROUTER_API_KEY": "YOUR_OPENROUTER_KEY"
}
}
}
}VS Code (.vscode/mcp.json):
{
"servers": {
"dataseo": {
"command": "uvx",
"args": ["--python", "3.10", "dataseo-mcp"],
"env": { "CAPSOLVER_API_KEY": "YOUR_CAPSOLVER_KEY" }
}
}
}Add OPENROUTER_API_KEY only if you want the AI tools.
API Reference
get_backlinks_list(domain)
{
"overview": { "domainRating": 76, "backlinks": 1500, "refdomains": 300 },
"backlinks": [
{
"anchor": "Suparank",
"domainRating": 71,
"title": "The best AI SEO tools",
"urlFrom": "https://source.example/best-seo-tools",
"urlTo": "https://suparank.io/",
"edu": false,
"gov": false
}
]
}keyword_generator(keyword, country="us", search_engine="Google")
Keyword and question ideas in the label / value shape. Volume and difficulty
come back as Ahrefs' bucketed estimates.
get_traffic(domain_or_url, country="None", mode="subdomains")
Traffic history, traffic summary, and top pages / countries / keywords. Both
costMonthlyAvg and the legacy costMontlyAvg spelling are included.
keyword_difficulty(keyword, country="us")
A keyword difficulty score plus the organic SERP rows with available metrics.
ai_search_queries(keyword, count=10, model="openai/gpt-4o-mini", language="en")
{
"keyword": "ai seo audit",
"queries": [
{ "query": "what is an AI SEO audit", "intent": "informational" },
{ "query": "best AI SEO audit tools", "intent": "commercial" }
],
"model_used": "openai/gpt-4o-mini",
"total_queries": 2
}count is 1–50. Intents are informational, commercial, transactional,
navigational.
Composite tools
domain_overview(domain, country="None")— backlink overview + traffic summary for one domain.compare_domains(domains, country="None")— 2–5 unique domains side by side.backlink_opportunities(domain, competitors)— competitor backlink sources missing from the target's sample.seo_content_brief(keyword, country="us", count=12, model, language)— keyword difficulty, SERP rows, AI queries, and recommended content angles in one call.
How it works
server.py stays thin; the work is split into focused modules:
services.py— tool orchestration and public return shapes.schemas.py— Pydantic validation and normalization.captcha.py— CapSolver / Anti-Captcha fallback with bounded polling.backlinks.py,keywords.py,traffic.py— Ahrefs endpoint adapters.ai.py— OpenRouter query generation.cache.py— JSON signature cache (default~/.cache/dataseo-mcp).
Every external HTTP boundary is mocked in tests.
Development
uv sync
uv run pytest -q
uv run ruff check .
uv run python -m compileall -q src
uv run python -c "from seo_mcp.server import main"Troubleshooting
Problem | Fix |
No CAPTCHA provider configured | Set |
CAPTCHA solving failed | Check provider balance, key validity, and rate limits |
AI tool returns a missing-key error | Set |
Empty SEO response | The domain or keyword may not be indexed upstream |
| Use |
License
MIT with an educational-use notice. Original fork attribution is preserved in LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/egebese/dataseo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server