Plausible Analytics MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PLAUSIBLE_API_KEY | Yes | Stats API key. The server exits with a clear message if it is missing. | |
| PLAUSIBLE_BASE_URL | No | Base URL for self-hosted instances, e.g. https://stats.example.com. Must be http(s) and must not contain credentials. Default is https://plausible.io | https://plausible.io |
| PLAUSIBLE_MCP_DEBUG | No | Set to 1 or true to log one line per request (site, status, duration) to stderr. | |
| PLAUSIBLE_TIMEOUT_MS | No | Per-request timeout (1000–120000). Default is 15000. | 15000 |
| PLAUSIBLE_DEFAULT_SITE_ID | No | Site used when a tool call omits site_id. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| plausible_check_site_accessA | Verify that the configured API key can query a site, and show today's visitor count as a smoke test. Call this first when a user mentions a new site, or when other tools return authentication or "not found" errors. The Stats API has no "list sites" endpoint (that is the separate Sites API with a different key type), so this checks one site at a time. Example: {"site_id": "example.com"} |
| plausible_get_aggregateA | Get headline totals for a site over a date range (one number per metric, no grouping). Use this for questions like "how many visitors last week?" or "what was the bounce rate in March for /pricing?". Use plausible_get_timeseries for trends over time and plausible_get_breakdown for top-N lists. Examples:
Notes: scroll_depth/time_on_page need an event:page filter; conversion_rate and revenue metrics need an event:goal filter; percentage is not available here (it needs a dimension). |
| plausible_get_timeseriesA | Get metrics bucketed over time (hour/day/week/month) to see trends, spikes and drops. Examples:
Dates/times are in the site's reporting timezone. Hourly buckets over long ranges produce many rows; prefer day/week for ranges over a few days. |
| plausible_get_breakdownA | Rank groups by metrics: top pages, sources, countries, devices, UTM campaigns, goals, custom properties. Paginated. Examples:
Rules: session metrics (bounce_rate, views_per_visit, visit_duration) cannot be combined with event dimensions other than event:page. "percentage" gives each group's share of the total. |
| plausible_get_realtime_visitorsA | Get how many unique visitors are on the site right now (last few minutes), optionally with the pages they are viewing. Examples:
Implemented with a Stats API v2 query over the last N minutes (UTC). Uses 1 request, or 2 when top_pages > 0. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool targets a clearly distinct operation: access verification, aggregate totals, time-series trends, dimension breakdowns, and realtime visitors. The descriptions cross-reference when to use each, leaving no meaningful overlap.
All tools follow the same pattern: the plausible_ prefix followed by a verb and a resource/query type (check_site_access, get_aggregate, get_timeseries, get_breakdown, get_realtime_visitors). Naming is uniform and predictable.
Five tools is well-scoped for a read-only analytics server. Each tool covers a fundamental Stats API query mode without unnecessary bloat or redundancy.
The server covers the core Plausible analytics surface: totals, trends, breakdowns, realtime visitors, and access verification. The lack of site listing is noted as an API limitation, not a gap in this tool set.