Claude Code is not Claude Desktop. Code is the CLI that lives in your repo and wants a bearer token. Desktop and Claude.ai use OAuth connectors. Both can read the same SiteLine warehouse. The credential you should use is not the same.
This page is the Claude Code path only. Desktop: Claude Desktop Search Console MCP. Both Claudes side by side: MCP for Search Console and analytics with Claude. Full client catalogue: SiteLine MCP setup for agents. Product overview: /mcp.
Before you add the servers
- Register — 7-day trial, no card to start. Pricing starts at $4.99/mo.
- Connect Google Search Console with
webmasters.readonly. Wait for the ~16-month backfill;get-import-statuswill say if it is still running. - Optionally enable cookieless analytics on the same domain if you want pageviews beside clicks.
- Open Settings → MCP access (
/settings/api-tokens). Name a token Claude Code, pick the team that owns the properties, create it, copy it once.
The token is team-scoped. It does not follow current_team_id in the browser. It cannot see another team's sites. Prefer an environment variable over a committed .claude.json when your build allows it.
Add both MCP servers
SiteLine exposes two HTTPS servers. One without the other is how the model invents the missing half.
| Server name | URL | Units |
|---|---|---|
siteline |
https://siteline.tools/mcp/search-console |
clicks, impressions, CTR, position, query, page |
siteline-analytics |
https://siteline.tools/mcp/analytics |
pageviews, visitor-days, events, goals, realtime |
Check claude mcp add --help on your binary before you trust flags from a blog — they move.
claude mcp add --transport http siteline https://siteline.tools/mcp/search-console \
--header "Authorization: Bearer YOUR_TOKEN"
claude mcp add --transport http siteline-analytics https://siteline.tools/mcp/analytics \
--header "Authorization: Bearer YOUR_TOKEN"
Replace YOUR_TOKEN with the secret from MCP access (or ${SITELINE_MCP_TOKEN} if your CLI expands env vars in headers). Prefer the env var so the token never lands in git.
Restart the Claude Code session after adding servers. Confirm both names appear in the MCP list for that session. SiteLine does not replace Claude's other MCP servers (GitHub, docs, Sentry). It replaces the Search Console screenshot you were pasting into the prompt.
Prefer agents on signup? Register with MCP intent.
Optional: curl sanity check
If Claude Code shows no tools, prove the token and URL before you debug the CLI:
curl -X POST https://siteline.tools/mcp/search-console \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
You should see list-sites, get-site-overview, and the rest. A 401 is a bad token. A 402 is a lapsed subscription — billing, not a cue to retry. Omitting Accept: application/json, text/event-stream can yield 406 against streamable HTTP even when the token is fine. Repeat against https://siteline.tools/mcp/analytics if analytics tools are the ones missing. A Search Console tools/list will never include get-analytics-overview.
First useful calls (in this order)
On the Search Console server:
list-sites— copy a site id. Do not guess the domain string.get-import-status— readdata_throughbefore you believe a cliff. Google is usually ~2 days late.get-site-overview— the only whole-site totals. Respectdata_through.- Then
get-movers,get-striking-distance, orget-queries-for-pagefor the URL you are about to edit.
Never sum query or page rows and call it the site. Never average position or CTR across rows. Tool semantics: MCP for Search Console data. Query-shaped prompts: How to query Search Console with MCP.
On the analytics server (same closed calendar dates):
list-analytics-sitesget-analytics-overviewget-analytics-breakdownwithdimension=pagefor the path you will touch
Visitors are not clicks. Two servers, two unit systems — Search Console clicks vs analytics sessions. get-analytics-realtime only tells you the tracker still fires after deploy. Judge SEO on the next closed Search Console days, not on Live.
Put the refusal in CLAUDE.md
Claude Code will still average position or equate visitors with clicks if the user asks for “one organic number.” Put this in CLAUDE.md (or the project instruction file your build reads):
SiteLine MCP rules:
- Totals from get-site-overview only. Never sum query or page rows.
- Never average position or CTR.
- Respect data_through. Empty lag days are not a decline.
- Web search type unless I name another. Discover/News position is null, not 0.
- Do not equate analytics visitors with Search Console clicks.
- Read-only: no indexing requests, no sitemap submit.
Claude Code's win is the diff, not a strategy deck. After movers and a page breakdown, it should open the template that owns the path. It must not “request indexing.” There is no write tool on these servers — Google scope is webmasters.readonly.
For the briefing surface without a repo, use Desktop/OAuth. For Cursor's JSON dialect of the same two URLs: MCP for Search Console and analytics in Cursor. Why agents need stored SEO data at all: How AI coding agents use SEO data. Buying/positioning context: Best SEO analytics tool for Claude Code.
MCP is included from $4.99/mo. Create an account — trial starts without a card. Prefer MCP on day one? Register with MCP intent.
FAQ
Does Claude Code pick up a Claude.ai or Desktop connector?
No. Different credential stores. OAuth lives under Connected apps. Tokens live in the MCP access table. Create a Claude Code token for the CLI even if Desktop is already connected. Details: MCP for Claude.
Why are there two claude mcp add commands?
/mcp/search-console is clicks and queries. /mcp/analytics is cookieless pageviews and events. One token can authorise both; the hosts and units stay separate. If you only add Search Console, the model invents on-site numbers.
Can Claude Code change my Search Console property?
No. Read-only Google scope (webmasters.readonly), read-only tools. No indexing, no sitemap submit, no URL inspection writes. If you also grant Claude write MCP servers (CMS, GitHub), that blast radius is yours — not SiteLine's.
The tools list is empty after claude mcp add
Run the curl tools/list check above. 401 → new token. 402 → fix billing. 406 → Accept header / CLI update. If curl succeeds and Claude Code still shows nothing, restart the session and re-check claude mcp add --help for how your build lists and reloads servers. Full troubleshooting: SiteLine MCP setup for agents.
Is MCP billed per tool call?
No. MCP is on every paid tier. You pay for the subscription and for billable analytics events (pageviews and custom events), not for Search Console import rows or MCP round-trips. Pricing.