
mcp-server
com.clickdecay/mcp-server
CTR change, click decomposition and known Search Console data anomalies for numbers you provide.
Documentation
![]()
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-server - Documentation: 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 |
|---|---|---|
compare_ctr_periods | prior and current: start, end (YYYY-MM-DD), clicks, impressions; optional source: gsc_ui_export, bulk_export, api or other | 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. |
project_clicks_at_ctr | impressions, ctrPercent (0–100: 3 means 3%) | The clicks those impressions would earn at that CTR (modelled). |
impressions_needed_for_clicks | clicks, ctrPercent | The impressions a click target needs at that CTR (modelled), or the reason there is no answer, such as a CTR of 0. |
check_gsc_reporting_issues | optional periods (up to four start/end ranges), optional source | 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. |
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/mcp
ChatGPT
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/mcp
OpenAI Codex CLI
codex mcp add clickdecay --url https://clickdecay.com/mcp
Clients 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.json - Agent 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 supports - Stateless: no
Mcp-Session-Id, no SSE stream;GETandDELETEget405 - CORS open (
*): no cookies or credentials are used - Every tool has a title, an output schema and the annotations
readOnlyHint: true,destructiveHint: false,idempotentHint: true,openWorldHint: false server.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
No installation packages available.