Connects Claude and other MCP clients to PostHog's product analytics API. You get 12 tools covering the main PostHog surface area: query events with filters, look up persons and their properties, execute saved insights and trends, check feature flag evaluations for specific users, pull experiment results with statistical significance, and list dashboards, cohorts, and actions. Useful when you're debugging user behavior, checking A/B test performance, or need to surface analytics data without leaving your editor. Requires a PostHog personal API key and works with both PostHog Cloud (US/EU) and self-hosted instances. The project ID can be set globally or passed per call.
Connect AI assistants to PostHog — query events, persons, insights, dashboards, feature flags, cohorts, and experiments through the Model Context Protocol.
Works with Claude Desktop, Cursor, Windsurf, Cline, Continue, and any MCP-compatible client.
| Tool | Description |
|---|---|
list_events | Query events with filters (event name, person, date range, properties) |
get_person | Get a person (user) by distinct_id — properties, creation date, event count |
list_persons | Search and list persons with pagination |
list_dashboards | List all dashboards — names, tags, widget counts |
get_dashboard | Get a specific dashboard with its insights and widgets |
execute_insight | Execute a saved insight (trend, funnel, etc.) and get results |
list_feature_flags | List all feature flags — key, active status, rollout percentage |
evaluate_feature_flag | Evaluate a flag for a specific user and get variant value |
list_cohorts | List cohorts — name, type (dynamic/static/SQL), person count |
list_experiments | List A/B tests — name, status, feature flag, dates |
get_experiment | Get experiment results with variant data and statistical significance |
list_actions | List custom event actions/definitions |
get_project_info | Get project name, ID, settings, and data region |
Go to PostHog → Settings → Personal API Keys and create a key with read access.
Or visit: https://your-instance.posthog.com/settings/user-api-keys
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"posthog": {
"command": "npx",
"args": ["-y", "posthog-mcp-server"],
"env": {
"POSTHOG_API_KEY": "phx_YOUR_API_KEY_HERE",
"POSTHOG_HOST": "https://us.i.posthog.com",
"POSTHOG_PROJECT": "YOUR_PROJECT_ID"
}
}
}
}
Cursor — add to MCP settings (.cursor/mcp.json):
{
"mcpServers": {
"posthog": {
"command": "npx",
"args": ["-y", "posthog-mcp-server"],
"env": {
"POSTHOG_API_KEY": "phx_YOUR_API_KEY_HERE",
"POSTHOG_HOST": "https://us.i.posthog.com",
"POSTHOG_PROJECT": "YOUR_PROJECT_ID"
}
}
}
}
# Clone and build
git clone https://github.com/friendlygeorge/posthog-mcp-server.git
cd posthog-mcp-server
npm install
npm run build
# Run
POSTHOG_API_KEY=phx_... POSTHOG_PROJECT=12345 node dist/index.js
| Variable | Required | Default | Description |
|---|---|---|---|
POSTHOG_API_KEY | ✅ | — | Your PostHog personal API key (phx_...) |
POSTHOG_HOST | ❌ | https://us.i.posthog.com | PostHog instance URL (use https://eu.i.posthog.com for EU) |
POSTHOG_PROJECT | ❌ | "" | Default project ID. If empty, must be specified per-call. |
If you run PostHog on your own infrastructure, set POSTHOG_HOST to your instance URL:
POSTHOG_HOST=https://posthog.yourcompany.com
Once configured, ask your AI assistant:
This server wraps the PostHog REST API (v1). Full documentation:
npm install
npm run dev # Build and run
npm run build # Build only
npm start # Run built output
MIT © Nova
io.github.infoinlet-marketplace/mcp-observability
betterdb-inc/monitor
com.mcparmory/datadog
thotischner/observability-mcp
io.github.tantiope/datadog-mcp
io.github.us-all/datadog