Mixpanel MCP

Live

OAUTH 2.1

PRODUCT ANALYTICS

Analytics

Mixpanel MCP gives your agent product analytics in plain language: run queries, build dashboards and cohorts, manage experiments and feature flags, and clean up Lexicon.

  • Per-user credentials: each call uses the actual user's token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Mixpanel MCP
agent · Acme Q3
Run
What was our signup to first purchase conversion last week, by platform?
S
mixpanelmcp_run_query
164ms
Analytics agent
Signup to first purchase converted at 18.4% on iOS, 15.1% on Android, and 11.7% on web last week.
Sources: Production project, funnel query, last 7 days
mixpanelmcp
1 funnel query
18:29
Message Claude...

Tools your analytics agent reaches for on Mixpanel, scoped per user.

CALL ANY TOOL
66 tools for product analytics in Mixpanel: run queries, manage dashboards, cohorts, metrics, experiments, and feature flags, and govern events in Lexicon.
mixpanelmcp_bulk_edit_events
Bulk edit events
Edit multiple events at once. Supports two modes: 1. Uniform fields (applied to ALL events): hidden, verified, dropped, tags, contact_emails, team_contact_names. 2. Per-event fields (on individual events in the events list): description, display_name. Both modes can be combined in a single call. Maximum 50 events per call.
Parameters
Name
Type
Required
Description
events
array
Required
No description.
project_id
integer
Required
No description.
contact_emails
string
Optional
No description.
dropped
string
Optional
No description.
hidden
string
Optional
No description.
tags
string
Optional
No description.
team_contact_names
string
Optional
No description.
verified
string
Optional
No description.
mixpanelmcp_create_cohort
Create cohort
mixpanelmcp_create_dashboard
Create dashboard
mixpanelmcp_create_feature_flag
Create feature flag
mixpanelmcp_create_metric
Create metric
mixpanelmcp_delete_cohort
Delete cohort
mixpanelmcp_describe_cohort_schema
Describe cohort schema
mixpanelmcp_dismiss_issues
Dismiss issues
mixpanelmcp_display_query
Query display
mixpanelmcp_edit_event
Edit event
mixpanelmcp_explain_experiment_health_check
Check explain experiment health
mixpanelmcp_find_duplicate_groups
Find duplicate groups
mixpanelmcp_get_business_context
Get business context
mixpanelmcp_get_custom_property
Get custom property
mixpanelmcp_get_events
Get events
mixpanelmcp_get_experiment_setup_guidance
Get experiment setup guidance
mixpanelmcp_get_feature_flag_lifecycle_guidance
Get feature flag lifecycle guidance
mixpanelmcp_get_lexicon_url
Get lexicon url
mixpanelmcp_get_lookup_table
Get lookup table
mixpanelmcp_get_projects
Get projects
mixpanelmcp_get_query_schema
Get query schema
mixpanelmcp_list_cohorts
List cohorts
mixpanelmcp_list_experiments
List experiments
mixpanelmcp_list_metrics
List metrics
mixpanelmcp_run_experiment_pre_launch_checks
Run experiment pre launch checks
mixpanelmcp_search_entities
Search entities
mixpanelmcp_update_business_context
Update business context
mixpanelmcp_update_custom_property
Update custom property
mixpanelmcp_update_experiment
Update experiment
mixpanelmcp_update_lookup_table
Update lookup table

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Mixpanel MCP tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["mixpanelmcp"], toolNames: [
    "mixpanelmcp_run_query",
    "mixpanelmcp_create_dashboard",
    "mixpanelmcp_list_experiments"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Show signup to first purchase conversion last week by platform" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["mixpanelmcp"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Show signup to first purchase conversion last week by platform" }],
  tools,
});

// Execute the tool call with the user's vaulted Mixpanel token
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["mixpanelmcp"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Show signup to first purchase conversion last week by platform" }],
  tools,
});

// Tool call runs with the user's vaulted Mixpanel token
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["mixpanelmcp"] }, pageSize: 100,
});

const agent = new Agent({
  name: "analytics_agent",
  model: "gemini-2.5-pro",
  instruction: "Mixpanel MCP tools scoped to this user",
  tools,
});

await agent.run("Show signup to first purchase conversion last week by platform");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Mixpanel MCP tool. Click to copy, paste into your agent, done.
Queries and dashboards
Copy the prompt
Copied
Show daily active users for the last 30 days by country.
Copy the prompt
Copied
Build a funnel from signup to first purchase for last week.
Copy the prompt
Copied
Create a dashboard with our activation and retention reports.
Experiments and flags
Copy the prompt
Copied
Run pre-launch checks on the new checkout experiment.
Copy the prompt
Copied
List feature flags in the Production project.
Copy the prompt
Copied
Search prior experiments that tested onboarding emails.
Data governance
Copy the prompt
Copied
Find duplicate event names in the Production project.
Copy the prompt
Copied
Mark the email property as sensitive in Lexicon.
Copy the prompt
Copied
Show open data quality issues for this project.
SEE HOW AUTH WORKS
Each user signs in to Mixpanel once; Scalekit stores and refreshes their tokens. Every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Mixpanel MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Mixpanel MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Mixpanel MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Mixpanel MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other analytics connectors.
GTM and RevOps Teams
Revenue forecast commentary
Pulls open pipeline from Salesforce and HubSpot, calculates coverage against quota, flags at-risk stages, posts commentary to Slack, and logs every snapshot to Google Sheets.
Engineering Teams
Engineering standup agent
Pulls commits from GitHub and GitLab, tracks issue movement in Jira, and posts a per-engineer standup brief to Slack. Each engineer's activity is read on their own delegated OAuth.
Engineering Teams
Slack triage
Polls Slack for new messages, classifies bugs and support requests with a LangGraph router, files GitHub issues or Zendesk tickets, and confirms in the thread.
Engineering Teams
DevOps assistant agent
Polls GitHub for failing checks and stale PRs, opens Linear issues for the ones that need work, and posts a daily digest to Slack. It acts as the engineer, not a shared service account.
Test other agents
See the same per-user auth pattern across other analytics connectors.
GTM
Revenue forecast agent
Score pipeline coverage against quota across Salesforce and HubSpot, post forecast commentary to Slack, log snapshots to Sheets.
ENGINEERING
Engineering standup agent
Pull commits from GitHub and GitLab, track Jira issue movement, and post a per-engineer standup brief to Slack.
ENGINEERING
Slack triage agent
Classify new Slack messages as bugs or support requests, file the GitHub issue or Zendesk ticket, and reply in the thread.
ENGINEERING
DevOps assistant agent
Poll GitHub for failing checks and stale pull requests, open Linear issues for the ones that need work, and digest to Slack.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Mixpanel token looks fine in a demo. In production every query looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Mixpanel today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Mixpanel as the user or through a shared key?
As the user. Each user signs in to Mixpanel once, and Scalekit stores and refreshes their tokens. Audit logs attribute every query and dashboard change to that user, not a shared service account.
Where is the Mixpanel OAuth token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Mixpanel?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example the query and get tools for a read-only analyst. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Mixpanel access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Is this Mixpanel's own MCP server?
Yes. The connector routes your agent's tool calls to Mixpanel's own MCP server through Scalekit, so the 66 tools are the ones Mixpanel publishes. Destructive tools such as mixpanelmcp_merge_group and mixpanelmcp_delete_dashboard can be left out of listScopedTools.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""mixpanelmcp"": {
""url"": ""https://mcp.scalekit.com/mixpanelmcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.mixpanelmcp]
url = ""https://mcp.scalekit.com/mixpanelmcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""mixpanelmcp"": {
""url"": ""https://mcp.scalekit.com/mixpanelmcp"",
""type"": ""http""
}
}
}