MCP · VS Code mcp.json · 94 tools · open source (MIT)

Your analytics, inside Copilot.

Ship a feature with GitHub Copilot in VS Code, then ask “did it work?” in the chat panel. One connect command writes the MCP server into VS Code's mcp.json with the right key, and that one connection operates every project in your org (pass project="checkout" to any tool). Because Copilot's agent has your code and tracking plan, you can ask by your own names (“MAU for the PQR page”) and it resolves them to routes; answers are computed from deterministic reports, never generated SQL.

copilot chat (agent mode) · /whats-broken-today
you ▸ /whats-broken-today
ai ▸ One thing changed: signup is down 18% vs a typical day (94 vs 115), started around 14:00. Tracking is healthy: all 6 planned events flowing. Traffic is normal, referrer mix unchanged. This is a product problem, not a tracking problem. Most useful action today: check yesterday's deploy to the signup form.
computed from deterministic reports, not guessed SQL. (demo data)

what analytics works with GitHub Copilot?

smolanalytics is open-source (MIT) web and product analytics you ask from GitHub Copilot in VS Code. Copilot's agent mode reads MCP servers from VS Code's user mcp.json, and the quirk that trips people up is the top-level key there is `servers`, not `mcpServers`. `smolanalytics connect vscode` writes that file with the right key for you, pointing Copilot at your org's single cloud MCP endpoint with your org token, so Copilot picks up the tools without you hand-editing JSON. That one connection operates your whole org: pass project="checkout" to any of the 94 tools and it routes to that project's own instance, and you can even provision a new project with create_project without opening a browser. Your secret read key stays server-side, never in your editor config, and the org token is permanent, so you set it up once and it persists. Once connected, Copilot gets 94 tools and 15 built-in prompts (instrument-my-app, whats-broken-today, weekly-review, and more). Because Copilot's agent also has your codebase and tracking plan, you can ask in your own terms, like "what's the MAU for the PQR page", and it resolves PQR to the /pqr route before querying. Answers are computed from exact, deterministic reports (funnels, retention, paths), never LLM-generated SQL. A plan-as-code gate (`smolanalytics plan check`) fails CI when an event your tracking plan expects stops firing, and it runs against existing PostHog data via --source=posthog before you migrate. You bring your own model (Copilot's), so asking is never metered. Self-host the single Go binary free forever, or use the cloud at smolanalytics.com: 14-day full trial, then $19/month.

built for the agent loop

One command, and it uses the right key
VS Code's mcp.json uses the top-level key servers, not mcpServers. Get that wrong and Copilot silently ignores the server. smolanalytics connect vscode writes the file correctly, pointing Copilot at your org's one MCP endpoint with your org token, so Copilot's agent mode picks up all 94 tools: funnels, retention, paths, trends, instrumentation health, alerts. That single connection operates every project in your org: pass project="checkout" to any tool and it routes to that project's instance. Your secret read key stays server-side, never in your editor config, and the token persists, so you set it up once. Copilot is your model, so asking is free.
15 built-in prompts
Pick a routine: instrument-my-app wires tracking on a fresh repo, whats-broken-today is the morning triage, weekly-review is the recap a good cofounder would give you. Each prompt calls the right tools in the right order and gives you the read, not a data dump.
Deterministic reports
The tools are computed reports, never generated SQL, so Copilot can't hallucinate a number it never computes. The number in your editor is the dashboard's number.
Plan-as-code, gated in CI
Your tracking plan lives in smolanalytics.plan.json. smolanalytics plan check exits 1 when an event the plan expects stops flowing, so instrumentation drift fails the build, not the launch. Already on PostHog? Run it with --source=posthog: same gate, zero migration.

Honest pricing: self-hosting is free forever, one MIT-licensed Go binary. The cloud is a 14-day full trial, then Pro $19/mo (2M events, 2 instances) or Scale $49/mo (5M events, 10 instances); overage is a flat $6 per million, dashboard never locks. Asking from Copilot is never metered: it's your model.

Stop alt-tabbing to a dashboard.

Wire it into Copilot in one command, gate your instrumentation in CI, and get the real number where you already work.

questions

How do I connect smolanalytics to GitHub Copilot?
Run smolanalytics connect vscode once. Copilot's agent mode reads MCP servers from VS Code's user mcp.json, and this writes the server there with the correct top-level key: servers, not mcpServers, which is the thing people get wrong by hand. It points at your org's one cloud MCP endpoint with your org token, so that single connection operates every project: pass project="checkout" to any tool and it routes to that project's instance, and create_project spins up a new one without a browser. Your secret read key stays server-side, never in your editor config, and the token is permanent, so it persists after the one setup. Copilot then gets 94 tools and 15 prompts. No API keys to us: Copilot is your model, so asking is never metered.
Can Copilot hallucinate my numbers?
No. The MCP tools are exact, deterministic reports (funnels, retention, paths), never LLM-generated SQL. You get the real number or nothing.
Can I fail CI when my tracking breaks?
Yes. Declare your tracking plan in smolanalytics.plan.json and run smolanalytics plan check in CI: it exits 1 when an event the plan expects stops flowing or a property goes missing. It also works against existing PostHog data with --source=posthog, so you can adopt the gate before migrating anything.

go deeper