Clicky MCP Server
The Clicky MCP Server provides AI assistants with access to Clicky web analytics data through 11 specialized tools:
get_total_visitors: Retrieve total visitor counts for a specified date rangeget_actions: Obtain total pageviews or actions for a specified periodget_bounce_rate: Get bounce rate and average time-on-siteget_visitors_online: View real-time visitor counts and segmentationget_top_pages: Discover the most popular pages (up to 1,000 results)get_page_traffic: Access traffic data for a specific page URLget_traffic_sources: Break down traffic sources, with optional filtering by page URLget_referring_domains: Identify top referring domainsget_domain_visitors: Fetch visitor data filtered by referrer domain, with optional segmentation (pages vs. visitors)get_searches: Find top search terms that brought visitorsget_countries: Examine visitor breakdown by country
Key details:
Supports flexible date ranges using explicit ranges (up to 31 days) or relative keywords like
last-7-daysorthis-monthRespects Clicky API limits: 31-day max range, 1,000 results per request, one simultaneous request per IP
Integrates with Claude Desktop, Claude Code, and MCP Inspector for debugging
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Clicky MCP Servershow me top pages from last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Clicky MCP Server
A Model Context Protocol (MCP) server that exposes Clicky web analytics as 11 tools for AI assistants — visitor counts, top pages, traffic sources, bounce rate, search terms, real-time visitors, and more. See the Tool reference for the full list.
Quick start
You need:
Node.js 20+ installed (
node --version)A Clicky Site ID and Site Key — find both at https://clicky.com/user/preferences/site under "Info"
This repo cloned and built once:
git clone https://github.com/colintoh/clicky-mcp.git cd clicky-mcp && npm install && npm run build
Then pick your MCP host below.
Why isn't there an
npm startstep? MCP stdio servers don't run as standalone daemons — your MCP host (Claude Desktop, Claude Code, etc.) spawns the server as a subprocess on demand and talks to it over stdin/stdout. There's nothing to "start" yourself.
Claude Desktop
Open the config file (create it if missing):
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Merge this into the file's
mcpServersblock (replace the threeALL_CAPSplaceholders):{ "mcpServers": { "clicky-analytics": { "command": "ABSOLUTE_PATH_TO_NODE", // e.g. /Users/.../.nvm/versions/node/v25.2.1/bin/node "args": ["ABSOLUTE_PATH_TO_CLICKY_MCP_FOLDER/dist/index.js"], // e.g. /Users/.../clicky-mcp/dist/index.js "env": { "CLICKY_SITE_ID": "YOUR_SITE_ID", "CLICKY_SITE_KEY": "YOUR_SITE_KEY" } } } }Get
ABSOLUTE_PATH_TO_NODEby runningwhich nodein your terminal. Don't just put"node"— Claude Desktop launches vialaunchdwith a minimal PATH that doesn't include nvm or homebrew, so a bare"node"will fail silently. Same goes for the path todist/index.js: it must be absolute.Fully quit Claude Desktop (
⌘Qon macOS — closing the window isn't enough), then reopen it.Verify by asking Claude "list my Clicky MCP tools" — you should see 11 tools.
If something goes wrong, see Troubleshooting.
Claude Code
One command:
claude mcp add clicky-analytics \
-e CLICKY_SITE_ID=YOUR_SITE_ID \
-e CLICKY_SITE_KEY=YOUR_SITE_KEY \
-- node /absolute/path/to/clicky-mcp/dist/index.jsThis writes to ~/.claude.json by default. Add --scope project to write a project-local .mcp.json instead. Restart Claude Code (or run /mcp to refresh) and the 11 tools become available.
MCP Inspector (debugging)
Use this when you want to call tools directly without committing the server to a host — handy for inspecting schemas or troubleshooting responses:
npx @modelcontextprotocol/inspector node dist/index.jsThen open the printed URL, set CLICKY_SITE_ID and CLICKY_SITE_KEY as environment variables in the Inspector UI (or pass --site-id … --site-key … as CLI args after dist/index.js), and click around.
Related MCP server: Plausible MCP Server
Date parameters
Every date-aware tool accepts either an explicit date range or a Clicky relative-date keyword — but not both:
Explicit:
start_date+end_date, bothYYYY-MM-DD, range ≤ 31 days.Keyword:
date_range, one oftoday,yesterday,last-7-days,last-30-days,this-week,last-week,this-month,last-month,this-year,last-year.
Example:
{ "date_range": "last-7-days" }Tool reference
All 11 tools, alphabetical-ish by use case.
get_total_visitors
Total visitor counts for a period.
start_date/end_dateordate_range
get_actions
Total pageviews/actions for a period.
start_date/end_dateordate_rangelimit(number, optional, max 1000)
get_bounce_rate
Bounce rate and average time-on-site for a period.
start_date/end_dateordate_range
get_visitors_online
Real-time visitor count and segmentation. Takes no parameters.
get_top_pages
Most popular pages for a period.
start_date/end_dateordate_rangelimit(number, optional, max 1000)
get_page_traffic
Traffic data for a specific page URL.
url(string, required)start_date/end_dateordate_range
get_traffic_sources
Traffic sources breakdown — optionally filter by page URL.
start_date/end_dateordate_rangepage_url(string, optional) — full URL or path
get_referring_domains
Top referring domains sending traffic.
start_date/end_dateordate_rangelimit(number, optional, max 1000)
get_domain_visitors
Visitor data filtered by referrer domain, with optional segmentation.
domain(string, required)start_date/end_dateordate_rangesegments(array, optional) —["pages", "visitors"]. Defaults to["visitors"].limit(number, optional, max 1000)
get_searches
Top search terms that brought visitors.
start_date/end_dateordate_rangelimit(number, optional, max 1000)
get_countries
Visitor breakdown by country.
start_date/end_dateordate_rangelimit(number, optional, max 1000)
API limits
Imposed by Clicky, not by this server:
Maximum explicit date range: 31 days
Maximum results per request: 1,000 items
One simultaneous request per IP per site ID
Troubleshooting
"Claude Desktop doesn't see the server." Check the spawn log at ~/Library/Logs/Claude/mcp-server-clicky-analytics.log. The most common cause is node not being on Claude Desktop's launchd PATH — fix by replacing "command": "node" with the absolute path from which node. The second-most-common cause is forgetting to fully quit Claude Desktop (⌘Q, not just close the window).
"Date range cannot exceed 31 days." That's a Clicky API limit, not us. Either narrow the range or use a date_range keyword like last-30-days.
Local development
For working on the server, not just using it.
npm install # install deps
npm run dev # run with tsx, watching for changes (used for local testing only)
npm run build # compile TS to dist/
npm test # 46 unit tests, offline, no credentials needed
npm run test:integration # live API smoke test (requires .env or env vars)For local dev, credentials can come from a .env file in the project root:
CLICKY_SITE_ID=your_site_id
CLICKY_SITE_KEY=your_site_key.env is gitignored. Don't use .env for hosts like Claude Desktop — pass credentials via the host's config env block instead, as shown in Quick start. The server only loads .env when credentials aren't already in the environment.
A pre-push git hook in .githooks/pre-push auto-runs npm test before any push that updates the remote main branch, so a regression can't slip out unnoticed. It's installed automatically by the prepare npm script after npm install. Pushes to feature branches are not gated. Bypass in an emergency with git push --no-verify.
Project structure
clicky-mcp/
├── src/
│ ├── index.ts # MCP server + tool dispatcher
│ ├── clicky-client.ts # Clicky HTTP API client
│ ├── date-utils.ts # Shared date param builder
│ └── tools/ # One file per tool
├── test/ # node:test unit tests
├── scripts/verify.mjs # Live API smoke runner
├── .githooks/pre-push # Auto-installed test gate for main
├── package.json
├── tsconfig.json
└── README.mdInstalling this MCP via an AI agent
If you'd like an AI agent (e.g. Claude Code in another project) to install this MCP for you, point it at this section. The agent should:
Clone and build:
git clone https://github.com/colintoh/clicky-mcp.git cd clicky-mcp && npm install && npm run buildAsk the user for their Clicky Site ID and Site Key (https://clicky.com/user/preferences/site).
Run
which nodeand capture the absolute path.Locate the user's Claude Desktop config (paths in Quick start › Claude Desktop) and merge in the
mcpServerssnippet from that section, substituting the absolutenodepath, the absolutedist/index.jspath, and the user's credentials.Tell the user to fully restart Claude Desktop (
⌘Q), then verify by asking Claude "list my Clicky MCP tools" — 11 tools should appear.
For Claude Code, the single claude mcp add command in Quick start › Claude Code is faster and writes the config in one step.
License
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/colintoh/clicky-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server