{"id":"edb3dcbd-c3d9-4a05-817d-d8c75fa0712b","slug":"misomoon","kind":"mcp","name":"misomoon","summary":"Privacy-first web analytics that runs in your own Cloudflare account. No cookies, MCP built in.","owner":"jackzard","repoUrl":"https://github.com/jackzard/misomoon","license":"AGPL-3.0","licenseTier":"strong-copyleft","trust":"community","stars":1,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-10-25T21:39:23.000Z","addedAt":"2026-10-29T09:25:39.673Z","logoUrl":"https://avatars.githubusercontent.com/u/16070875?u=0c908d60e0943a60d205370b98c06a2f877bc5af&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["data-analytics","cloud-infra"],"tags":["analytics","cloudflare-d1","cloudflare-workers","google-analytics-alternative","open-source","privacy","self-hosted","svelte"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-29T10:15:21.537Z","sample":false,"url":"https://conduits.dev/tools/misomoon","language":"TypeScript","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/images/logo-dark.png\">\n    <img src=\"docs/images/logo-light.png\" alt=\"misomoon\" width=\"300\">\n  </picture>\n</p>\n\n<p align=\"center\">\n  Privacy-first web analytics that runs in your own Cloudflare account.<br>\n  A Google Analytics alternative with no cookies, no servers, and an MCP server built in.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://misomoon.com/demo\">Live demo</a> ·\n  <a href=\"docs/self-hosting.md\">Deploy</a> ·\n  <a href=\"docs/README.md\">Docs</a> ·\n  <a href=\"docs/comparison.md\">Compare</a> ·\n  <a href=\"CONTRIBUTING.md\">Run locally</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/jackzard/misomoon/actions/workflows/ci.yml\"><img src=\"https://github.com/jackzard/misomoon/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-AGPL--3.0-E8461A\" alt=\"AGPL-3.0 license\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://deploy.workers.cloudflare.com/?url=https://github.com/jackzard/misomoon/tree/deploy/misomoon\"><img src=\"https://deploy.workers.cloudflare.com/button\" alt=\"Deploy to Cloudflare\"></a>\n</p>\n\nmisomoon is open-source web analytics that you deploy to your own Cloudflare account\nwith one button. It counts visitors without cookies and keeps every number in databases\nthat you own. Claude, Cursor, and other AI tools can read your stats through its\nbuilt-in MCP server. You have no server to run and nothing to patch.\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/images/overview-dark.png\">\n  <img src=\"docs/images/overview-light.png\" alt=\"The misomoon dashboard: visitors, visits, pageviews, bounce rate, and visit duration over 30 days, with top sources and pages\">\n</picture>\n\nA $29 payment lands the night a post goes viral. The 30-second film shows how misomoon\ntraces it back to the visit that brought the buyer.\n\n<a href=\"https://misomoon.com/film/misomoon-film.mp4\"><img src=\"docs/images/film-poster.jpg\" alt=\"Watch the 30-second misomoon film: where did the $29 come from?\" width=\"640\"></a>\n\n## Set it up in about 5 minutes\n\nYou need a Cloudflare account and a GitHub or GitLab account. You don't need a server,\nDocker, or a terminal.\n\n1. Select **Deploy to Cloudflare**, and sign in to Cloudflare:\n\n   [![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/jackzard/misomoon/tree/deploy/misomoon)\n\n2. Connect your GitHub or GitLab account, and select **Create and deploy**. Cloudflare\n   copies misomoon into a repository that you own, creates the databases and the\n   queues, and deploys it.\n3. Open your new URL, such as `https://misomoon.<your-subdomain>.workers.dev`, and\n   create an account. The first account owns the instance. After it, sign-up closes,\n   and people join by invitation.\n4. In **Settings**, add your site's domain. Copy the snippet, and paste it into the\n   `<head>` of every page:\n\n   ```html\n   <script defer src=\"https://misomoon.example.workers.dev/m.js?s=your-site\"></script>\n   ```\n\n5. Open your site. Your visit appears in **Live** within a few seconds.\n\nThe [self-hosting guide](docs/self-hosting.md) covers each step in detail, plus a custom\ndomain, emails, and Google Analytics import.\n\n### Deploy from the command line instead\n\n```sh\ngit clone https://github.com/jackzard/misomoon.git\ncd misomoon\npnpm install\npnpm --filter @misomoon/api exec wrangler login\npnpm --filter @misomoon/api run deploy\n```\n\nOnly the first account can sign up, and everyone after it needs an invitation. The\n[command-line steps](docs/self-hosting.md#deploy-from-the-command-line) explain what the\ndeploy creates.\n\n## Why misomoon\n\n- **Nothing to run.** misomoon is one Cloudflare Worker with D1 databases and a queue.\n  Cloudflare runs it, so you have no server, container, or database to patch.\n- **Your data stays in your account.** Every event lives in D1 databases that you\n  control. Nobody else can read them, including the misomoon project.\n- **No cookies.** The tracker stores nothing on the device and never stores IP\n  addresses. Visitor ids come from a salt that changes every day, so nobody can follow a\n  visitor from one day to the next, beyond a visit still open at midnight UTC.\n- **One page answers most questions.** The overview shows sources, pages, countries,\n  devices, goals, and Core Web Vitals together. Click any row to filter the whole page\n  by it.\n- **Your AI tools can read it.** The built-in [MCP server](docs/mcp.md) lets Claude,\n  Cursor, and other clients answer \"where did last week's signups come from?\" from the\n  same numbers that the dashboard shows.\n- **Every feature is free.** Funnels, journeys, revenue, goals, email reports, alerts,\n  and shared dashboards are all in the one version. There is no paid edition.\n- **Bring your history.** Import your Google Analytics history or a CSV file, and\n  connect Google Search Console to see what people searched for.\n- **It grows with your traffic.** misomoon spreads events across D1 databases called\n  shards. To add capacity, you change one number.\n\n## What it costs\n\nmisomoon is free and open source under AGPL-3.0. You pay Cloudflare for what the Worker uses, and you\npay the misomoon project nothing.\n\nThe Workers Free plan handles about 3,000 events a day, which fits a personal site or a\nsmall product. For more traffic, the Workers Paid plan starts at $5 a month for the\nwhole account. See [Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/)\nand [D1 pricing](https://developers.cloudflare.com/d1/platform/pricing/).\n\nSelf-hosting stays free. Each instance runs on its owner's Cloudflare bill, so no feature\nsits behind a paid plan. [misomoon Cloud](docs/cloud.md), the hosted version, funds the\nproject, and it also has every feature on every plan.\n\n## Pick a way to deploy\n\n| | Deploy to Cloudflare button | Command line |\n| --- | --- | --- |\n| What you need | A browser, and a GitHub or GitLab account | Node.js 22.5 or later, pnpm 10, and git |\n| Who can sign up | Only the first account | Only the first account |\n| Shards | 2 | Any number, with `SHARD_COUNT`, and per data region with `SHARD_REGIONS` |\n| Change the code | No. Your copy holds the built files. | Yes. Edit any package, and deploy. |\n| Deploys run from | Cloudflare, on each push to your copy | Your machine, or your own CI |\n| Upgrade | [Copy the new bundle](docs/upgrading.md#upgrade-a-deploy-to-cloudflare-install) into your repository | `git pull`, and deploy again |\n\nStart with the button. Use the command line when you want to change the code, run more\nthan two shards, or deploy from your own CI.\n\n## How it compares\n\n| | misomoon | Google Analytics 4 | Plausible CE | Umami |\n| --- | --- | --- | --- | --- |\n| Open source | AGPL-3.0 | No | AGPL-3.0 | MIT |\n| What you run | A Worker in your Cloudflare account | Nothing (Google runs it) | Docker, Postgres, and ClickHouse | Node.js and Postgres |\n| Who holds the data | You | Google | You | You |\n| Cookies | None | `_ga`, for 2 years | None | None |\n| Funnels and revenue | Yes | Yes | Cloud Business plan only | Yes |\n| Built-in MCP server | Yes | Experimental | Not in its docs | Yes |\n| Tracker, gzipped | 987 bytes core, 1.9 KB Light, 4.8 KB everything | 157 KB | 1.3 KB basic, 2.5 KB current | 2.3 KB |\n\nChecked on 2026-10-25.\n[The full comparison](docs/comparison.md) covers DataFast, Mixpanel, Microsoft Clarity,\nMatomo, PostHog, Fathom, Vercel Web Analytics, Simple Analytics, Pirsch, Cloudflare Web\nAnalytics, Swetrix, GoatCounter, and Rybbit, with a source for every cell.\n\n## Track events and revenue\n\nThe snippet counts pageviews, including route changes in single-page apps. To count\nsignups, purchases, and other actions, call `misomoon()`:\n\n```js\nmisomoon('Signup', { props: { plan: 'pro' } })\nmisomoon('Purchase', { revenue: { amount: 49, currency: 'USD' } })\n```\n\nThe [tracking guide](docs/tracking.md) covers goals, hash routers, and how to exclude\nyour own visits. To credit payments to the visits that brought them, connect your\npayment provider: [Connect payments](docs/revenue.md). For React Native and Expo apps, server-side events, and a typed wrapper\nfor React and Next.js, install `@misomoon/sdk` and read the [SDK guide](docs/sdk.md).\n\n## Ask your AI tools\n\nIn **Settings**, open **Connect AI tools (MCP)**, and create a key for your site. Then\nadd the server to Claude Code:\n\n```sh\nclaude mcp add --transport http misomoon https://analytics.example.com/mcp --header \"Authorization: Bearer mm_...\"\n```\n\nAsk Claude \"Where did last week's visitors come from?\" The\n[MCP guide](docs/mcp.md) shows the setup for Claude Desktop, Cursor, and other clients.\n\n## What's inside\n\n<table>\n  <tr>\n    <td width=\"50%\"><img src=\"docs/images/funnels.png\" alt=\"A funnel from the home page through pricing to signup, with conversion and drop-off at each step\"></td>\n    <td width=\"50%\"><img src=\"docs/images/reports-dark.png\" alt=\"Reports for sources, pages, countries, devices, goals, and Core Web Vitals in the dark theme\"></td>\n  </tr>\n</table>\n\n- **Overview**: visitors, visits, pageviews, bounce rate, visit duration, and revenue,\n  with comparisons to the previous period or the previous year.\n- **Reports**: sources, UTM campaigns, pages, entry and exit pages, countries, regions,\n  cities, browsers, devices, and custom properties. Click any row to filter.\n- **Funnels and journeys**: up to 8 steps in strict, sequential, or flexible order, and\n  the most common paths through your site.\n- **Goals and revenue**: for events or page paths, with a reporting currency for each\n  site.\n- **Payments**: connect Stripe, Polar, Lemon Squeezy, Dodo Payments, or your own server,\n  and see revenue by source, campaign, country, and device, without cookies.\n- **Behavior**: clicks per element with rage and dead clicks, drawn over your live page;\n  scroll depth; form fields people give up at; site search terms; JavaScript errors;\n  video and audio plays; and impressions of tagged content. Counts only, no recordings.\n- **Core Web Vitals**: LCP, INP, CLS, FCP, and TTFB from real visitors.\n- **Realtime**: visitors in the last 5 minutes and a live event feed.\n- **Sharing**: public dashboards, and shared links with a password and an expiry date.\n- **Teams**: owners, admins, editors, and viewers, with invitations and API keys.\n- **Email reports and alerts**: weekly and monthly reports with a PDF copy, and alerts\n  for traffic spikes and drops.\n- **Imports**: Google Analytics history, CSV files, and Google Search Console queries.\n- **First-party proxy**: serve the tracker from your own domain, so ad blockers don't\n  drop it.\n\n## Limits\n\n- misomoon needs Cloudflare. It doesn't run on your own hardware or in Docker.\n- A visitor is unique for one day. The visitor id changes daily, so a returning visitor\n  counts as new each day. This is what makes it work without cookies.\n- Very large sites can outgrow the write rate of one D1 database for a single site. The\n  [architecture notes](docs/ARCHITECTURE.md#sharding) describe the next step.\n\n## Docs\n\n- [Run misomoon in your Cloudflare account](docs/self-hosting.md)\n- [Track your site](docs/tracking.md)\n- [Track apps and servers with the SDK](docs/sdk.md)\n- [Ask AI tools about your traffic](docs/mcp.md)\n- [Serve the tracker from your own domain](docs/PROXY.md)\n- [Track a WordPress site and WooCommerce store](docs/wordpress.md)\n- [Configuration](docs/configuration.md) and [API](docs/api.md) references\n- [Upgrade](docs/upgrading.md), [troubleshooting](docs/troubleshooting.md), and the\n  [FAQ](docs/faq.md)\n- [Architecture](docs/ARCHITECTURE.md)\n\n## How it's built\n\nmisomoon is a pnpm monorepo. One Worker serves the tracker, the APIs, and the\ndashboard.\n\n| Path | Stack | What it does |\n| --- | --- | --- |\n| `apps/api` | Worker, Hono, D1, Queues | Ingest, the APIs, MCP, and cron jobs. Serves the dashboard. |\n| `apps/dashboard` | Svelte 5, Vite+ | The dashboard |\n| `apps/landing` | SvelteKit | The marketing site. You don't need it to run misomoon. |\n| `apps/docs` | SvelteKit | The docs site, built from `docs/` |\n| `packages/core` | TypeScript | The event schema, filters, SQL builders, the shard planner, and merges |\n| `packages/tracker` | JavaScript | `m.js` |\n| `packages/sdk` | TypeScript | `@misomoon/sdk`, for React, Next.js, React Native, and servers |\n| `packages/brand` | CSS, SVG | Design tokens and the logo |\n| `plugins/wordpress` | PHP | The WordPress plugin |\n| `templates` | Workers, Vercel | One-click proxy templates |\n\n## Feedback\n\n[Report a bug or suggest a feature](https://github.com/jackzard/misomoon/issues/new/choose)\nin the issues. misomoon doesn't take pull requests.\n[CONTRIBUTING.md](CONTRIBUTING.md) shows how to run misomoon locally with demo data. To\nreport a security issue, follow [SECURITY.md](SECURITY.md).\n\n## License\n\nmisomoon is licensed under [AGPL-3.0](LICENSE). You can run, change and share it. If you\nrun a changed copy as a service for other people, AGPL-3.0 asks you to offer them the\nsource of your changes.\n\nThe parts that go into your own site or app stay under the MIT license, so you can add\nthem without AGPL-3.0 applying to your code: the tracker script\n([packages/tracker](packages/tracker/LICENSE)), the SDK\n([packages/sdk](packages/sdk/LICENSE)), the WordPress plugin\n([plugins/wordpress/misomoon](plugins/wordpress/misomoon/LICENSE)) and the proxy templates\n([templates](templates)).\n"}