Skip to main content
Glama
posthog-mcp-server

posthog-mcp-server

PostHog MCP Server

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.

Features

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

Related MCP server: Posthog Universal MCP Server

Quick Start

1. Get a PostHog API Key

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

2. Configure your MCP client

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"
      }
    }
  }
}

3. Run manually (for testing)

# 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

Environment Variables

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.

Self-hosted PostHog

If you run PostHog on your own infrastructure, set POSTHOG_HOST to your instance URL:

POSTHOG_HOST=https://posthog.yourcompany.com

Example Queries

Once configured, ask your AI assistant:

  • "Show me the last 20 pageview events"

  • "Who are the most active users this week?"

  • "What's the status of our signup conversion experiment?"

  • "Is the new-checkout-flow feature flag enabled for user abc123?"

  • "Show me all active dashboards"

  • "Execute insight 42 and show me the trend"

  • "List all feature flags that are currently active"

  • "How many people are in the 'Power Users' cohort?"

API Reference

This server wraps the PostHog REST API (v1). Full documentation:

Development

npm install
npm run dev     # Build and run
npm run build   # Build only
npm start       # Run built output

License

MIT © Nova

Available Tools

13 tools
evaluate_feature_flagA

Evaluate a feature flag for a specific user. Returns whether the flag is enabled and its variant value.

Inputs: flag_key (required), distinct_id (required).

execute_insightA

Execute a saved PostHog insight by ID and return the results. Use list_dashboards to find insight IDs, or pass a raw insight definition.

Inputs: insight_id (required), refresh.

get_dashboardA

Get a specific PostHog dashboard by ID, including its insights and widgets.

Inputs: dashboard_id (required).

get_experimentA

Get detailed results for a specific PostHog experiment, including variants, metrics, and statistical significance.

Inputs: experiment_id (required).

get_personA

Get a PostHog person (user) by their distinct_id. Returns person properties, creation date, and event count.

Inputs: distinct_id (required).

get_project_infoA

Get basic information about the PostHog project — name, ID, created date, and available features.

Inputs: no named parameters.

list_actionsA

List PostHog event actions (custom event definitions). Shows name, steps, and creation date.

Inputs: limit.

list_cohortsB

List all PostHog cohorts in the project. Shows name, type, person count, and creation date.

Inputs: limit, search.

list_dashboardsA

List all PostHog dashboards in the project. Returns dashboard names, IDs, and widget counts.

Inputs: limit.

list_eventsA

Query events from PostHog. Filter by event name, person, date range, and properties. Returns recent events matching your criteria.

Inputs: after, event, limit, before, +2 more.

list_experimentsA

List all PostHog experiments (A/B tests) in the project. Shows name, status, and key results.

Inputs: limit.

list_feature_flagsA

List all PostHog feature flags in the project. Shows name, key, active status, and rollout percentage.

Inputs: limit, active.

list_personsA

List PostHog persons (users). Search by name or distinct_id, with pagination.

Inputs: limit, offset, search.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 13 tools

    Disambiguation5/5

    Each tool targets a distinct resource-action pair: events, persons, dashboards, insights, feature flags, cohorts, experiments, actions, and project info. The list/get/execute/evaluate verbs clearly differentiate operations on the same resource.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_events, get_person, evaluate_feature_flag), with verbs like list, get, execute, and evaluate used uniformly for their respective operations.

    Tool Count5/5

    13 tools is well-scoped for a PostHog analytics server, covering major data types (events, persons, dashboards, insights, flags, cohorts, experiments, actions) without excessive granularity. Each tool serves a distinct purpose.

    Completeness4/5

    The tool set provides comprehensive read-only querying across PostHog's core domains. Minor gaps exist: no direct list_insights endpoint (insights only via dashboards/execute_insight) and no write/update/delete operations, but these are likely intentional for a query-oriented server.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      A Model Context Protocol server that enables Claude Desktop users to interact directly with PostHog, allowing them to view projects and create annotations through natural language commands.
      10
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables interaction with PostHog analytics platform, allowing users to list projects, create annotations, and search insights through natural language in Claude Desktop.
      5
      MIT
    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables interaction with PostHog's product analytics platform through natural language, allowing users to manage feature flags, view errors, and access other platform features.
      112 npm
      1
      MIT