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 12 tools for AI assistants — visitor counts, top pages, traffic sources, campaigns, 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" (you'll paste these into a local
.envfile, never into the chat)An MCP-capable AI agent — Claude Code, Claude Desktop, Codex, opencode, Cursor, Cline, …
MCP servers are installed by your agent, not started by hand — so the fastest setup is to hand the job over. Copy the block below and paste it to your agent:
Install the Clicky MCP server for me. It's a stdio MCP server, so the same definition works in any MCP host (Claude Code, Claude Desktop, Codex, opencode, Cursor, Cline, …) — register it using your host's own mechanism; only the config format differs, and you know your host better than this doc does.
1. Clone and build:
git clone https://github.com/colintoh/clicky-mcp.git
cd clicky-mcp && npm install && npm run build
Confirm the build produced dist/index.js. If it's missing, stop and show me
the build output instead of continuing.
2. Set up credentials WITHOUT putting them in this chat:
cp .env.example .env
Then tell me to open clicky-mcp/.env in my editor and paste my Clicky Site ID
and Site Key there myself (from https://clicky.com/user/preferences/site,
under "Info"). Do NOT ask me to paste the keys here, and do NOT read or print
.env — the server loads it at startup; the keys must never enter this chat.
3. Register it with this stdio server definition (no credentials in the host
config — the server reads them from .env):
command: absolute path to node — run `which node`; a bare "node" or a
relative path will fail
args: ["<absolute-path>/clicky-mcp/dist/index.js"]
transport: stdio
Add it with your host's own mechanism. One-line references if helpful:
- Claude Code: `claude mcp add clicky-analytics -- <node> <path>/clicky-mcp/dist/index.js`
- JSON hosts (Claude Desktop, Cursor, Cline, …): a "clicky-analytics"
entry under "mcpServers" with command + args (no env block needed)
- Codex (~/.codex/config.toml): [mcp_servers.clicky-analytics] with the
same command + args
If the host needs a restart to load new servers (Claude Desktop needs a full
Cmd-Q quit, not just closing the window), tell me to do that.
4. Verify: confirm your host lists a "clicky-analytics" server exposing 12 tools.Why no
npm start? MCP stdio servers aren't standalone daemons — your agent's MCP host spawns the server as a subprocess on demand and talks to it over stdin/stdout. There's nothing to "start" yourself, which is also why setup is "tell your agent" rather than "run a command."
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 12 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_campaigns
Traffic grouped by campaign tag (utm_campaign or Clicky campaign tracking). Only tagged inbound traffic appears here — untagged organic/direct traffic does not.
start_date/end_dateordate_rangelimit(number, optional, max 1000)include_keywords(boolean, optional) — also return campaign keyword/term tags
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)Credentials come from a .env file in the project root — copy the template and fill in your values:
cp .env.example .envCLICKY_SITE_ID=your_site_id
CLICKY_SITE_KEY=your_site_key.env is gitignored, and it's the recommended way to supply credentials for both local dev and MCP hosts: it keeps your keys out of host config files and out of any agent chat. The server resolves .env relative to its own location, so it's found no matter what working directory the host launches it from, and it only loads .env when the credentials aren't already in the environment. You can still pass CLICKY_SITE_ID/CLICKY_SITE_KEY via the host's env block or --site-id/--site-key args if you prefer.
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.mdLicense
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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