Ask Claude, Cursor and other AI assistants about your SEO
serp.ac runs a remote Model Context Protocol (MCP) server. Connect it once and your assistant can answer questions like “which keywords dropped this week?”, “how often does ChatGPT recommend us?” or “which paid links have issues?” straight from your serp.ac data — and, if you allow it, add keywords, prompts and links for you.
1. Create an API key
In serp.ac open Settings → API and create a key (only the account owner and admins can). Copy it — it is shown once. The MCP server uses the same keys, rate limit (120 requests per minute per key) and quotas as the REST API. Each key gives full access to the account that created it, so keep it secret and revoke it on the same page if it leaks.
2. Connect Claude
Claude (claude.ai and the Claude apps) — custom connector
Go to Settings → Connectors → Add custom connector, name it serp.ac and use the server URL https://serp.ac/api/mcp. The server authenticates every request with your API key sent as Authorization: Bearer sk_live_…; if the connector dialog on your plan has no way to send that header, use the Claude Desktop configuration below instead.
Claude Desktop — config file
Open Settings → Developer → Edit config and add the server to claude_desktop_config.json. It runs the mcp-remote bridge (requires Node.js), which forwards your key as a header. Restart Claude Desktop afterwards.
{
"mcpServers": {
"serp-ac": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://serp.ac/api/mcp", "--header", "Authorization:${SERP_AC_AUTH}"],
"env": { "SERP_AC_AUTH": "Bearer sk_live_..." }
}
}
}Claude Code
claude mcp add --transport http serp-ac https://serp.ac/api/mcp \ --header "Authorization: Bearer sk_live_..."
3. Connect Cursor and other clients
Cursor: add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json in a project, then enable it under Settings → MCP.
{
"mcpServers": {
"serp-ac": {
"url": "https://serp.ac/api/mcp",
"headers": { "Authorization": "Bearer sk_live_..." }
}
}
}Any other MCP client (ChatGPT, VS Code, Windsurf, your own agent) works the same way as long as it supports the Streamable HTTP transport and can send the Authorization header. Clients that only support stdio can use the mcp-remote bridge shown above.
Quick check from a terminal:
curl https://serp.ac/api/mcp \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Read-only mode
Tools marked Changes data add things to your account and tools marked Uses quota spend your monthly quotas; assistants are told to ask you first. To expose only the read tools, connect with https://serp.ac/api/mcp?readonly=1. Read-only mode is a setting of the connection, not of the key — a key always carries the account's full rights.
Tools
Every tool answers with a short summary plus the same data as structured JSON. Lists are capped (up to 200 rows) and only ever contain your own account's data. Projects can be referred to by id or by domain.
- list_projectsRead
List the serp.ac projects (websites) in this account with their ids, domains and how many keywords, AI prompts and purchased links each tracks. Call this first to get project ids.
- get_rankingsRead
Google rankings of a project's tracked keywords: current position, change since the previous check (positive = moved up), ranking URL, whether a Google AI Overview is shown and cites the site, and last check time. Optional keyword text filter and device filter.
- get_ai_visibilityRead
AI visibility of a project in ChatGPT, Perplexity, Gemini, Claude and Google AI Mode: share of answers that mention the brand, citation rate, average position, per-engine numbers, a per-prompt × engine matrix, top cited source domains, share of voice and other brands the AI assistants recommend.
- get_backlinks_summaryRead
Backlink overview of a project: total backlinks and referring domains, domain rank, dofollow share, new links in the last 30 days, lost links and the strongest referring domains.
- list_purchased_linksRead
Purchased (paid) links tracked in Link management: status (pending, active, issue, lost, expired, cancelled = paused), detected issues, price, billing cycle, next payment / renewal date and vendor, plus payments due in the next 30 days. All projects unless a project is given.
- get_index_jobRead
Status of an index check job started with check_index, with the index status of each URL (indexed, not_indexed, queued, error).
- get_usageRead
The account's plan and subscription status, plan limits with current usage (projects, keywords, AI prompts, links) and the remaining monthly quotas (index submits, index checks, keyword data lookups).
- get_maps_rankingsRead
Google Maps rank tracking (local geo-grid) of a project: without campaign, every Maps campaign with its latest local presence score (0–100), top-10 coverage and average rank; with campaign (id or keyword text), the latest scan's rank at every grid point, scan history, outranking competitors and the local pack.
- track_keywordsChanges data
starts tracking new keywords' Google rankings in a project. Each new keyword counts against the plan's SERP keyword limit; keywords already tracked are left unchanged. Ask the user before adding many keywords.
- add_ai_promptsChanges data
adds prompts (questions people ask AI assistants) to a project's AI visibility tracking; they then run on a schedule. Each new prompt counts against the plan's AI prompt limit; prompts already tracked are left unchanged.
- add_purchased_linkChanges data
adds a purchased (paid) link to a project's Link management so serp.ac checks it daily and reminds about payments. Counts against the plan's tracked-link limit. Fails with already_tracked if the same source → target link exists.
- check_indexUses quota
starts a job that checks whether URLs are indexed by Google. Each URL uses 1 index check from the monthly quota (then purchased packs); nothing is charged if there isn't enough. Returns a job id — call get_index_job for the results.
- get_keyword_dataUses quota
search volume, CPC, competition, keyword difficulty, search intent and 12-month trend per keyword. Each keyword not already cached counts against the account's paid monthly keyword lookup quota (cached keywords are free); check get_usage first for large lists.
Limits and errors
- Write tools follow your plan exactly like the dashboard and the REST API: keyword, prompt and link limits, AI engines included in the plan, and an active plan or trial.
check_indexuses 1 index check per URL from the monthly quota, then from packs;get_keyword_datauses the monthly keyword lookup quota for keywords that aren't cached. Nothing is charged when the quota is short.- Problems with a call (unknown project, invalid arguments, limit reached) come back as a tool error the assistant can read. A missing or revoked key returns HTTP 401, a suspended account 403 and too many requests 429.
Automating without an AI assistant? See the REST API reference under Settings → API.