Click Decay
Provides tools for comparing Google Search Console clicks and impressions across periods, calculating CTR changes, decomposing click changes into impression and CTR components, projecting clicks or impressions at a given CTR, and checking dates against known Search Console reporting issues.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Click Decay: MCP server
Search Console CTR comparisons inside Claude, ChatGPT, Cursor, VS Code and other MCP clients. Give it the clicks and impressions of two periods and it splits the click change into a part from impressions and a part from CTR, labels every number as observed, calculated or modelled, and checks the dates against known Google Search Console reporting issues.
Server URL:
https://clickdecay.com/mcp(use this exact host:www.clickdecay.comredirects, and a redirect breaks POST requests)Transport: Streamable HTTP (stateless JSON responses)
Authentication: none, no API key
Registry name:
com.clickdecay/mcp-serverDocumentation: clickdecay.com/mcp-server (Estonian: clickdecay.com/et/mcp-server)
Web tools: CTR calculator and Search Console analysis
Changes: CHANGELOG.md
This repository holds the documentation and client configuration only. The server is hosted by QQQ OÜ on clickdecay.com; there is nothing to install or run.
Tools
All four tools only read: they calculate from the numbers you give and store nothing.
Tool | Input | Returns |
|
| CTR of both periods, the change in percentage points and percent, the click and impression changes, clicks at the earlier CTR, and the split of the click change into an impressions component and a CTR component. Also the known reporting issues the dates overlap and the warnings. The periods must be the same length, must not overlap, and must have ended. |
|
| The clicks those impressions would earn at that CTR (modelled). |
|
| The impressions a click target needs at that CTR (modelled), or the reason there is no answer, such as a CTR of 0. |
| optional | The known Search Console reporting issues that overlap the dates, with the affected metrics, the sources they apply to and Google's own notice. Without dates: every known issue. |
Related MCP server: Google Search Console MCP Server
How to read the results
Every number is an object
{ value, evidence, nullReason, unit }.evidence:observed(arithmetic on the numbers you gave),calculated(exact decomposition),modelled(depends on an assumed CTR) ornot_established.unit:ctr_fraction(0.045 means 4.5%),percentage_points,percent,clicksorimpressions.valueis unrounded. It isnullwhen the quantity is undefined or withheld, andnullReasonsays why.
From 13 May 2025 to 27 April 2026 Google logged Search Console impressions wrongly. When a period overlaps that, every figure that depends on impressions is withheld (
GSC_REPORTING_ANOMALY) and the issue is listed with its source. Clicks are still compared.The split of a click change is arithmetic, not a cause. Every comparison carries the warning
NO_AI_CAUSATION: the numbers do not show why clicks or CTR changed, or whether AI Overviews played a part.An input that breaks a rule, such as more clicks than impressions or overlapping periods, comes back as an error with a code and the field, so the assistant can correct it.
The formulas are in the methodology.
Connect
Claude (claude.ai, Claude Desktop)
Settings → Connectors → Add custom connector → URL https://clickdecay.com/mcp, no authentication.
Claude Code
claude mcp add --transport http clickdecay https://clickdecay.com/mcpChatGPT
Developer mode → Settings → Connectors → add a server with URL https://clickdecay.com/mcp, authentication "No authentication".
Cursor
~/.cursor/mcp.json or .cursor/mcp.json in a project (examples/cursor.mcp.json):
{
"mcpServers": {
"clickdecay": {
"url": "https://clickdecay.com/mcp"
}
}
}VS Code
.vscode/mcp.json (examples/vscode.mcp.json):
{
"servers": {
"clickdecay": {
"type": "http",
"url": "https://clickdecay.com/mcp"
}
}
}Windsurf
Windsurf MCP config (Cascade → MCP servers → View raw config):
{
"mcpServers": {
"clickdecay": {
"serverUrl": "https://clickdecay.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http clickdecay https://clickdecay.com/mcpOpenAI Codex CLI
codex mcp add clickdecay --url https://clickdecay.com/mcpClients that only support stdio
Use the mcp-remote bridge (examples/claude-desktop-stdio.json):
{
"mcpServers": {
"clickdecay": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://clickdecay.com/mcp"]
}
}
}Example prompts
"Compare 1–28 August, 5,400 clicks from 120,000 impressions, with 1–28 September, 4,100 clicks from 124,000 impressions. How much of the drop came from CTR?" The answer: impressions added about 180 clicks and the lower CTR cost about 1,480, a change of −1,300.
"How many impressions do I need for 1,000 clicks at a CTR of 2.5%?"
"Were there known Search Console reporting issues between March and May 2026?"
Plugins
This repository is also a plugin for agents that install plugins from GitHub. It bundles the remote server config and a skill that tells the agent when to use each tool:
Claude Code:
/plugin marketplace add meelis545/clickdecay-mcp, then/plugin install clickdecay@clickdecay(.claude-plugin/,.mcp.json,skills/)Cursor:
.cursor-plugin/plugin.jsonandmcp.jsonAgent Plugins (agent-plugins.org):
plugin.jsonandmcp.json
Limits
What | Limit |
Requests per connection (IP address; IPv6 per /64) | about 60 a minute |
Requests in total | about 300 a minute |
Request body | 16 KB |
Privacy
The tools accept numbers, dates and the name of the data source only: no queries, page URLs, site names or files.
Values are calculated in memory and returned. They are not stored, not logged and not used for research.
The IP address is only the key of Cloudflare's per-minute rate limiter and is not stored.
Search Console exports are read only in your browser on clickdecay.com/gsc-audit; the MCP server takes no files.
Full notice: https://clickdecay.com/privacy/#mcp
Protocol details
Protocol versions:
2025-11-25,2025-06-18,2025-03-26and older ones the official TypeScript SDK supportsStateless: no
Mcp-Session-Id, no SSE stream;GETandDELETEget405CORS open (
*): no cookies or credentials are usedEvery tool has a title, an output schema and the annotations
readOnlyHint: true,destructiveHint: false,idempotentHint: true,openWorldHint: falseserver.jsonis the entry in the official MCP Registry
About
Click Decay reads Google Search Console numbers without reading more into them than they show. It is run by QQQ OÜ, an SEO and AI search agency in Tallinn, Estonia, and written by Meelis Vill (about).
Contact
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Turn Search Console data into SEO actions, content, publishing, indexing, and AI insights.
Google Search Console, GA4 and Bing Webmaster data for SEO and AI-search work. 20 read-only tools.
Hosted, read-only Google Search Console MCP: performance, comparisons, URL inspection, sitemaps.
Search Console SEO analytics: rankings, clicks, CTR, striking-distance insights, charts, sitemaps.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables querying Google Search Console data including rankings, clicks, and impressions for websites. Provides tools for analyzing search performance, top queries, page metrics, and ranking changes.MIT
- FlicenseAqualityDmaintenanceIntegrates with Google Search Console to enable querying search analytics, comparing performance periods, generating visual reports, and identifying SEO optimization opportunities through natural language.59-
- FlicenseNot gradedqualityDmaintenanceEnables querying Google Search Console data via natural language, providing tools for site traffic analysis, page changes, and optimization opportunities.-
- AlicenseAqualityBmaintenanceGoogle Search Console for agents: search analytics by query, page, country, and device, plus a striking-distance report for queries ranking just off page one. Also lists, submits, and removes sitemaps and inspects URLs for index status, last crawl, and canonical.758 npmMIT