Ahrefs MCP Server
Ahrefs MCP Server
MCP server per Ahrefs API v3 (Site Explorer), pensato per il piano Lite (10.000 units/mese, 60 req/min).
Espone 5 tool a Claude Code via il mcp-gateway esistente, con caching SQLite e budget tracking per non sforare la quota.
Tool disponibili
Tool | Endpoint | Costo (units) | Cache TTL |
|
| ~50 | 7 giorni |
|
| ~50 | 7 giorni |
|
| 50 + limit×4 (~130 a limit=20) | 24h |
|
| 50 + limit×3 (base) o 50 + limit×12 (con traffic) | 24h |
| (locale) | 0 | — |
Quanto puoi usarlo col piano Lite
10.000 units/mese a budget pieno significa:
~200 chiamate di solo
domain_ratingobacklinks_stats, oppure~90 chiamate di
top_organic_keywords(limit=20), oppure~110
top_pagessenza traffic (limit=20), oppure~34
top_pagesconwith_traffic=True(limit=20).
Mix realistico mensile: ~150–250 chiamate utili sfruttando la cache (TTL 7 giorni per metriche stabili, 24h per liste ranked). Usa ahrefs_budget_status per verificare il consumo in qualsiasi momento.
Quickstart locale (sviluppo)
cd "/mnt/d/NAS/Claude/MCP Ahrefs"
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# inserisci AHREFS_API_KEY=...
# (per dev locale puoi puntare cache/budget alla cartella corrente)
echo "AHREFS_CACHE_DB_PATH=./cache.db" >> .env
echo "AHREFS_BUDGET_PATH=./budget.json" >> .env
python ahrefs_server.py
# in altra shell
curl http://localhost:8089/Smoke test API key
Prima di tutto verifica che la tua chiave Lite funzioni:
export AHREFS_API_KEY="..."
curl -s -i -H "Authorization: Bearer $AHREFS_API_KEY" \
"https://api.ahrefs.com/v3/site-explorer/domain-rating?date=$(date +%F)&target=calcolatorigratis.com%2F"Cerca nei response header le righe X-Api-Units-Cost e X-Api-Units-Remaining — confermano i nomi reali per il client (sono parsati case-insensitive con fallback graceful).
Deploy su Proxmox CT102
./deploy/install.sh root@ct102
ssh root@ct102 'nano /opt/ahrefs-mcp/.env' # imposta AHREFS_API_KEY
ssh root@ct102 'systemctl restart ahrefs-mcp'
ssh root@ct102 'journalctl -u ahrefs-mcp -f'Lo script:
rsync del progetto in
/opt/ahrefs-mcpcrea
/var/lib/ahrefs-mcpper cache.db e budget.jsonvenv +
pip installcopia il systemd unit + abilita + restart
Integrazione con mcp-gateway
Sul container che ospita il gateway (CT102), aggiungi ahrefs-mcp come upstream con tag ahrefs:
URL upstream:
http://localhost:8089/sseTag:
ahrefs(oahrefs,seo)Restart
mcp-gateway
Per accesso cross-sessione Claude Code, aggiorna ~/.claude.json:
{
"mcpServers": {
"mcp-gateway": {
"type": "http",
"url": "https://mcp.calcolatorigratis.com/mcp?tags=core,monetizzazione,ahrefs",
"headers": { "Authorization": "Bearer <gateway-token>" }
}
}
}Oppure per i singoli progetti aggiorna i loro .mcp.json.
Struttura
ahrefs_server.py # FastMCP + Starlette + uvicorn (port 8089)
ahrefs_tools.py # 5 @mcp_server.tool()
ahrefs_client.py # httpx wrapper + parsing X-Api-Units-*
ahrefs_cache.py # SQLite TTL cache
ahrefs_budget.py # Tracker units mensile (warning 8K, hard stop 10K)
deploy/
ahrefs-mcp.service
install.sh
.env.example
requirements.txtNote operative
Hard stop a 10.000 units: il MCP rifiuta nuove chiamate API (le cache hit continuano a funzionare). Reset automatico al cambio mese.
Warning a 8.000 units: appende un suffisso
⚠️alle risposte ma non blocca.with_traffic=Truesutop_pages: usalo solo quando ti serve davvero, costa ~3x.Cache deterministica: chiave = SHA256(endpoint + params ordinati). Stesso target+date+limit ⇒ stessa chiave.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/Raffaele86/ahrefs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server