A MCP (Model Control Protocol) SEO tool service based on Ahrefs data. Includes features such as backlink analysis, keyword research, traffic estimation, and more.
This service provides an API to retrieve SEO data from Ahrefs. It handles the entire process, including solving the CAPTCHA, authentication, and data retrieval. The results are cached to improve performance and reduce API costs.
This MCP service is for educational purposes only. Please do not misuse it. This project is inspired by
@哥飞社群.
🔍 Backlink Analysis
Get detailed backlink data for any domain
Filter educational and government domains
🎯 Keyword Research
Generate keyword ideas from a seed keyword
View search volume and trends
📊 Traffic Analysis
Estimate website traffic
Track keyword rankings
🚀 Performance Optimization
Use CapSolver to automatically solve CAPTCHA
pip install seo-mcp
Or use uv:
uv pip install seo-mcp
bash
git clone https://github.com/cnych/seo-mcp.git
cd seo-mcp
bash
pip install -e .
# Or
uv pip install -e .
bash
export CAPSOLVER_API_KEY="your-capsolver-api-key"
You can run the service in the following ways:
In the Cursor settings, switch to the MCP tab, click the +Add new global MCP server button, and then input:
{
"mcpServers": {
"SEO MCP": {
"command": "uvx",
"args": ["--python", "3.10", "seo-mcp"],
"env": {
"CAPSOLVER_API_KEY": "CAP-xxxxxx"
}
}
}
}
You can also create a .cursor/mcp.json file in the project root directory, with the same content.
The service provides the following MCP tools:
get_backlinks_list(domain: str)Get the backlinks of a domain.
Parameters:
domain (string): The domain to analyze (e.g. "example.com")Returns:
{
"overview": {
"domainRating": 76,
"backlinks": 1500,
"refDomains": 300
},
"backlinks": [
{
"anchor": "Example link",
"domainRating": 76,
"title": "Page title",
"urlFrom": "https://referringsite.com/page",
"urlTo": "https://example.com/page",
"edu": false,
"gov": false
}
]
}
keyword_generator(keyword: str, country: str = "us", search_engine: str = "Google")Generate keyword ideas.
Parameters:
keyword (string): The seed keywordcountry (string): Country code (default: "us")search_engine (string): Search engine (default: "Google")Returns:
[
{
"keyword": "Example keyword",
"volume": 1000,
"difficulty": 45,
"cpc": 2.5
}
]
get_traffic(domain_or_url: str, country: str = "None", mode: str = "subdomains")Get the traffic estimation.
Parameters:
domain_or_url (string): The domain or URL to analyzecountry (string): Country filter (default: "None")mode (string): Analysis mode ("subdomains" or "exact")Returns:
{
"traffic_history": [...],
"traffic": {
"trafficMonthlyAvg": 50000,
"costMontlyAvg": 25000
},
"top_pages": [...],
"top_countries": [...],
"top_keywords": [...]
}
keyword_difficulty(keyword: str, country: str = "us")Get the keyword difficulty score.
Parameters:
keyword (string): The keyword to analyzecountry (string): Country code (default: "us")Returns:
{
"difficulty": 45,
"serp": [...],
"related": [...]
}
For development:
git clone https://github.com/cnych/seo-mcp.git
cd seo-mcp
uv sync
CAPSOLVER_API_KEY environment variableMIT License - See LICENSE file
$ claude mcp add seo-mcp \
-- python -m otcore.mcp_server <graph>