I Ask Cursor Instead of the Analytics Tab
I ship in Cursor. The dashboard is a different tab. That tab is where questions go to die.
I would change the signup button, deploy, then remember twenty minutes later that I never checked whether last week’s change moved the funnel. So I opened EventDash, clicked around, forgot why I came, and went back to the PR.
The question was always the same: did anyone finish signup after I shipped that?
I did not need a chart. I needed an answer in the same chat that just wrote the patch.
I am Wlad. I built EventDash. I already live in the editor, and I was tired of treating analytics like a separate product I had to go use.
What this actually is
MCP is a way for the editor to call tools. You do not need to care about the protocol.
You add EventDash as a server. Cursor can then ask for traffic, top pages, goal completions, and funnel drop-off. The server is read-only. It cannot change your tracking. It cannot see visitor IDs or IP addresses.
Setup, tokens, and client snippets live in the MCP docs.
What I type instead of opening a tab
Same questions I used to lose in a dashboard tab:
- “How did traffic look the last 7 days versus the last 30?”
- “Where does the signup funnel drop off?”
- “Which pages got views this week, and which of them fired a goal?”
- “Which UTM campaigns converted in the last 30 days?”
- “Are we close to the monthly event quota?”
If I have not listed apps yet, I start with that. An account token can see every app I allowed. An app read key is already bound to one project, so it skips the extra step.
I ask before I leave the file. If the worst step is still signup_clicked →
signup_completed, I stay in the component that owns that button.
How the button got marked in the first place: track a signup without GTM.
The five-minute setup (then stop)
- Create a token in Settings → API / MCP. Account-wide is
edt_. One app isedr_. - Point Cursor at
https://www.eventda.sh/api/mcp. - Put the token in MCP config. Not in the chat.
{
"mcpServers": {
"eventdash": {
"url": "https://www.eventda.sh/api/mcp",
"headers": {
"Authorization": "Bearer edt_xxx"
}
}
}
}
Claude Code, Codex, and VS Code use the same endpoint. Copy the command from the MCP docs instead of inventing one.
Do not paste the token into chat. If the agent asks for it in the thread, no.
The mix-up that wastes an afternoon
The key in the script is ed_. It can only ingest events. That is on
purpose. If a page can see it, it should not be able to read your numbers.
MCP needs edt_ or edr_. Those live in settings, not in the tracker snippet.
If Cursor says it cannot list apps, you probably pasted a tracking key. Create a real token and try again. Do not invent one. Do not ask the model to invent one.
Full tool list: MCP tools. Agents that need the install path, not the query path, start at docs for agents.
What it cannot do
- It will not replace the dashboard. A timeseries you want to stare at, or a share link you send a client, still lives in the app. MCP is for the question that shows up while you are already coding.
- It will not give you session replay or feature flags. PostHog’s MCP can hunt a replay and toggle a flag. EventDash will not catch up there. Ours answers traffic, pages, goals, and one funnel.
- It will not invent a funnel you never created. If signup is not a funnel in the app, the agent cannot discover drop-off by vibes. Build the path first: cookieless conversion funnels.
- It will not help if nothing is firing. No tracker, no
data-ed-goal, no events. Install from the quickstart before you ask Cursor why the numbers are empty.
Read-only also means the agent cannot “fix” tracking for you through MCP. It can tell you the worst step. You still change the HTML.
When I still open the dashboard
Monday, when I want the picture, not a sentence.
When I am handing a client a share link instead of a screenshot.
When I want Core Web Vitals next to the same page as the funnel, that view is a chart, and a chart is still easier in the product.
The rest of the week, the tab stays closed. I ask from Cursor, get the worst step, and go back to the file.
If you already work this way, start free after the first goal fires. The shorter pitch is for founders.
Related:
Key takeaways
- The dashboard is a different tab. That is where weekly product questions go to die while you are already in Cursor.
- EventDash MCP is read-only: the editor can ask about traffic, pages, goals, and one funnel. Tracking keys cannot read anything.
- Put an edt_ or edr_ token in mcp.json. Never paste it into chat. The ed_ key in the script is write-only.
- PostHog’s MCP can flip flags and hunt replays. Ours cannot. Ours answers the question you had before you opened another tab.
FAQ
- Can I query EventDash from Cursor?
- Yes. Create an edt_ account token or an edr_ app read key in Settings → API / MCP, add the EventDash server to Cursor’s MCP config, and ask in chat. Tracking ed_ keys in the script cannot read analytics. The editor asks. It does not write.
- What is MCP analytics?
- MCP analytics means an editor or coding agent calls tools to read product metrics instead of you opening a dashboard. EventDash exposes a read-only remote MCP server at https://www.eventda.sh/api/mcp for traffic, pages, goals, and funnels.
- Do I use the tracker key for Cursor MCP?
- No. The ed_ key in the browser snippet can only ingest events. MCP needs an edt_ account token or an edr_ app read key. Do not invent keys, and do not paste tokens into chat.
- Is EventDash MCP read-only?
- Yes. Agents can list apps and read overview, pages, referrers, campaigns, goals, and one funnel. They cannot change tracking, create funnels, or see visitor IDs or IP addresses. Read-only is the product limit, not a missing setting.
- Does this work with Claude Code and Codex?
- Yes. The same Streamable HTTP endpoint works in Cursor, Claude Code, Codex, VS Code, and Claude Desktop. Setup commands live in the MCP docs. The token rules do not change when the editor does.