smolanalytics
Provides a native Android SDK (via JitPack) for tracking events, user identification, and autocapture in Android apps.
Publishes a Dart SDK on pub.dev for Flutter/Dart apps to send analytics events and user properties.
Offers a React Native SDK (via npm) that works with Expo for tracking events and autocapture in React Native apps.
Provides a Flutter SDK on pub.dev for tracking events and user properties in Flutter apps.
Provides a native Swift SDK (via SPM) for iOS apps to track events, identify users, and autocapture clicks.
Provides a Kotlin/Android SDK (via JitPack) for tracking events and user properties in Android apps.
Includes a framework guide for integrating the analytics snippet and track() calls in Next.js applications.
Includes a framework guide for integrating the analytics snippet and track() calls in React applications.
Provides a native Swift SDK (via SPM) for iOS/macOS apps to track events, identify users, and autocapture clicks.
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., "@smolanalyticsshow me the funnel from signup to purchase"
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.
smolanalytics
web + product analytics in one Go binary. no ClickHouse, no Kafka, no cluster. ask it in your editor.
Live demo · Docs · Cloud · Star this repo ★

self-hosting posthog means clickhouse, kafka, redis and a postgres. this is one binary.
If you want product analytics you can actually run yourself, the options are bad. PostHog is a stack: ClickHouse, Kafka, Redis, and a Postgres to babysit. Plausible and Umami install easily but stop at web analytics, so no funnels, no retention, no cohorts.
smolanalytics is the middle that didn't exist. One Go binary, one data file, no external database. It does web analytics (visitors, referrers, UTM, devices) and product analytics (funnels, retention, paths, cohorts) from the same events, plus feature flags, A/B testing, click heatmaps, in-product surveys, a session inspector, and deploy-impact. Cookieless mode means no consent banner. MIT, free forever, and your data never leaves your box.
It also answers in plain English, from the dashboard or from your editor over MCP, using your own model, so the AI part costs nothing.
Try it in 30 seconds
docker run -p 8080:8080 ghcr.io/arjun0606/smolanalytics demo# install script (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/Arjun0606/smolanalytics/main/install.sh | sh
smolanalytics demo
# or with Go
go run github.com/Arjun0606/smolanalytics/cmd/smolanalytics@latest demoOpen localhost:8080: a fully populated dashboard, a "what to fix" verdict up top, and an ask bar with your real events and pages as one-click chips. Nothing to configure. Prefer not to install? The live demo is the real product on demo data, running right now.
Related MCP server: DB-MCP
Ask your analytics where you write code
This is the point of the whole tool. smolanalytics is an MCP server, so your coding agent queries your real analytics without you leaving the editor. It has your codebase, your tracking plan, and smolanalytics over MCP, so it answers in your terms: ask "what's the MAU for the PQR page" and it knows PQR is the /pqr route from your code. Your model does the reasoning, so there are no API keys and nothing metered.
smolanalytics connect # wires it into every coding assistant you have installedyou ▸ how's activation, and is pro converting better than free?
ai ▸ Activation is 62% (657 of 1,051 signups reach "activate").
Pro converts 2.4× better end-to-end: 45% signup→checkout vs 19% on free.
The leak is activate→checkout on free (only 31% continue). Want the paths after activate?Your model gets 79 tools and 14 built-in prompts, and it runs the whole product, not just queries: ask reports, roll out a flag, read the A/B result, create a cohort, set an alert, verify instrumentation. Anything it creates shows up on the dashboard instantly.
Assistant | command | Assistant | command |
Claude Code |
| Cursor |
|
Claude Desktop |
| Windsurf |
|
VS Code (Copilot) |
| Cline |
|
// stdio (local, reads your data file directly)
{ "mcpServers": { "smolanalytics": { "command": "smolanalytics", "args": ["mcp"] } } }
// HTTP (point at a running instance, local or remote)
{ "mcpServers": { "smolanalytics": { "url": "http://localhost:8080/mcp" } } }Claude Code, HTTP: claude mcp add --transport http smolanalytics http://localhost:8080/mcp. Any MCP client works (stdio + Streamable HTTP). When a read key is set, add "headers": { "Authorization": "Bearer YOUR_KEY" }.
There is also a built-in dashboard ask bar (zero setup, no code lookup) for quick data questions like "visitors to /pricing" or "where do people drop off?".
The whole toolkit, one binary
The usual advice is "run Plausible for web, something heavier for product, and separate tools for flags, experiments, and surveys." smolanalytics is all of it, computed from one append-only event log, and every surface is askable in your editor.
what you get | ask it, or hit the API | |
Product analytics | funnels (ordered / strict / unordered, exclusions, per-step filters, breakdowns), retention (rolling + weekly buckets), trends (count / sum / avg / p90), paths, lifecycle, stickiness, cohorts, sequenced behavioral cohorts, B2B account groups |
|
Web analytics | visitors, live-now, top pages, referrers, UTM, devices, the Plausible-shaped view |
|
Feature flags | boolean + multivariate, property targeting + percentage rollout, deterministic bucketing so the SDK and the agent always agree; |
|
A/B testing | flags measured on a goal event, per-variant conversion after first exposure, lift vs control, 95% two-proportion z-test |
|
Click heatmaps | click-density grid + top clicked elements per page and viewport, from |
|
In-product surveys | NPS / rating / choice / text, URL + sampling targeting, dependency-free SDK widget |
|
Session inspector | event-based journey replay: pages, clicks with positions, rage-clicks, ms timing |
|
Deploy impact | before/after metric attribution per commit: which ship moved the metric |
|
Full tool + prompt reference: docs/prompts.md · the plain-GET stats API: docs/api.md.
Provably correct, or it fails CI
The agreement test asserts, on every build, that the MCP answer equals the /v1 HTTP API answer byte-for-byte for the same question across funnel, retention, trends, web_overview, paths, heatmap, flag_impact, survey_results, list_sessions, and more. The dashboard renders from those same reports, so it cannot drift either. There is no second query path to disagree with. This is the one thing an AI-answer layer built on generated SQL structurally cannot promise.
Send events (web, mobile, server)
One snippet autocaptures pageviews + clicks. Add track() for the moments you care about.
<script src="https://YOUR_HOST/sdk.js"></script>
<script>
smolanalytics.init("YOUR_WRITE_KEY", { host: "https://YOUR_HOST" });
smolanalytics.track("signup", { plan: "pro" }); // optional, for funnels
smolanalytics.identify("user_123"); // on login
</script>Ingestion is one endpoint, so anything with an HTTP client works (curl -XPOST $HOST/v1/events ...). And there are published native SDKs with an offline-safe queue, batching, sessions, and lifecycle events:
Platform | install |
Swift (iOS) | SPM: |
Kotlin / Android | JitPack: |
React Native / Expo | npm: |
Flutter / Dart | pub.dev: |
Framework guides (2 minutes each): Next.js · React · Vue · Backend · Mobile. Or paste one line into Cursor / Claude Code and let it instrument the app: docs/agents.md.
Which deploy moved the metric?
Every other tool shows you the graph dropped. It cannot tell you which ship dropped it, because it does not have your commits. Record a marker in CI (smolanalytics deploy, one line) and ask your editor "did my last deploy move signups?" and you get a before/after read that leads with any regression, computed from the same reports (correlation, not proof, and the copy says so).
How it compares
smolanalytics | Plausible / Fathom | Mixpanel / Amplitude | PostHog | |
Funnels · retention · paths · cohorts | ✅ | ⚠️ paid / partial | ✅ | ✅ |
Flags · A/B · surveys · heatmaps · sessions | ✅ one binary | ❌ | ⚠️ separate / paid | ✅ |
Ask in plain English | ✅ your AI, free | ❌ | 💲 their AI | 💲 their AI + MCP |
AI numbers match the dashboard | ✅ CI-enforced | n/a | ⚠️ | ⚠️ "may not match the UI" |
Which deploy moved the metric | ✅ | ❌ | ❌ | ❌ |
Self-host | ✅ one binary | ✅ | ❌ | ⚠️ Kafka + ClickHouse |
Own your data · export | ✅ | ✅ | ⚠️ | ✅ |
Three things they structurally cannot copy: the AI is yours (they meter theirs); answers come from exact reports with CI proving they match the dashboard; your data never leaves your box.
Run it in production
docker run -p 8080:8080 -v $PWD/data:/data \
-e SMOLANALYTICS_WRITE_KEY=$(openssl rand -hex 16) \
-e SMOLANALYTICS_PASSWORD=$(openssl rand -hex 12) \
ghcr.io/arjun0606/smolanalyticsOne static binary, no cgo, no cluster. It binds 127.0.0.1 by default and refuses to serve real data unauthenticated on a public interface. Two keys: a public write key (ingest only, ships in your HTML) and a secret read key (reports, export, MCP). Scale to billions of events on flat RAM with an optional S3 / R2 / Tigris cold tier, keep a SMOLANALYTICS_RETAIN_DAYS window, and cron smolanalytics brief for a morning digest. Full config, backups, and the storage design: Deploy guide · STABILITY.md.
Own it, forever
Private by architecture. No third party, no cookies by default, a cookieless mode that needs no consent banner, and GDPR erasure in one call (
DELETE /v1/users/{id}/data). The answer to "who can see this data?" is: you.MIT, no CLA, no rug-pull. There is no license to revoke. Fork it the day you stop liking us.
No lock-in.
GET /v1/exporthands you everything as CSV or JSONL, and the JSONL round-trips back into/v1/events. Import from PostHog, Mixpanel, Amplitude, Umami, CSV, or JSONL with original timestamps.Works without us. One static binary, no phone-home, no license server. If this repo went dark tomorrow, your instance would not notice.
Don't want to run it? → smolanalytics Cloud
Self-hosting is the free tier, unlimited, forever. The hosted cloud adds an isolated instance per project, your whole team, the morning brief delivered, and scale with zero ops. 14-day full-product trial (no card), then Pro $49/mo (1M events) or Scale $149/mo (10M events), flat $8 per extra million. Overage never locks your dashboard.
The one thing it deliberately does not do
Feature flags, A/B, heatmaps, surveys, a session inspector, cohorts: all ship, all from the same binary. The single deliberate exception is pixel-perfect DOM / video session replay (the screen-recording kind), which needs a heavy recorder and a separate blob store and would break the single-binary model. The event-based session inspector ships instead. Also by design: no multi-node / clustering / HA. Exactly one writer per instance is why it self-hosts in 30 seconds.
Contributing
PRs welcome. Keep it small, correct, and dependency-free (CONTRIBUTING.md). Security: SECURITY.md.
License
MIT, forever. No CLA, no relicense: the business is the hosted cloud, never the license. Use it, fork it, host it, sell hosting of it.
If smolanalytics is useful, a ★ helps other people find it.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that provides AI assistants with team analytics capabilities for Cursor editor, allowing them to retrieve team member information, usage metrics, and spending data through natural language queries.Last updated33MIT
- AlicenseBqualityDmaintenanceAn MCP server that bridges AI assistants with data warehouses through Cube.js to enable governed, natural language semantic analytics queries. It provides tools for metadata discovery and secure query execution while enforcing governance policies like PII blocking and access limits.Last updated3901MIT
- AlicenseAqualityBmaintenanceMCP server that gives AI assistants real-time access to Stripe business metrics like MRR, churn, and revenue forecasts via natural language queries.Last updated7MIT
- Flicense-qualityDmaintenanceAn MCP server that provides Google Analytics and Search Console data as tools for AI assistants, enabling natural language queries for web analytics, SEO performance, and site insights.Last updated
Related MCP Connectors
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
GibsonAI MCP server: manage your databases with natural language
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/Arjun0606/smolanalytics'
If you have feedback or need assistance with the MCP directory API, please join our Discord server