PostHog MCP 服务器
一个用于PostHog的模型上下文协议(MCP)服务器,提供解析,特征旗帜,实验,仪表板等访问权限. 与PostHog Cloud和自办公司合作.
特征
- 分析:运行HogQL查询和结构化查询(趋势、漏斗、保留、寿命周期、路径、粘性)
- 特性旗: 创建、更新、列表并删除带有推出控制的特性标记
- 实验: 列出并检查具有变体和度量的A/B试验试验
- 磁盘板和透视: 创建、列出和检查仪表板并保存见解
- 事件属性( P): 探索事件定义和财产定义
- 个人和组合: 搜索用户并管理部分
- 调查和早期获取: 清单调查和早期访问功能
- 说明: 创建和列出部署和事件的图表说明
- 搜索: 搜索所有 PostHog 实体
- 自我拥有: 与静态证书直接连接的API——不需要OAuth
- 类型脚本: 用 Zod 验证完全输入
安装
npm install -g @arvoretech/posthog-mcp
配置
服务器通过环境变量配置 :
export POSTHOG_BASE_URL=https://posthog.example.com # or https://app.posthog.com
export POSTHOG_API_KEY=phx_your_personal_api_key
export POSTHOG_PROJECT_ID=1 # optional, defaults to 1
获取您的 API 密钥
- 转到 PostHog 设置 个人 API 密钥
- 点击“ 创建个人 API 密钥 ”
- 选择您需要的范围( 或如果可用的话使用“ MCP 服务器”)
- 复制生成的密钥( 启动于
phx_(中文(简体) )
使用量
# Development
pnpm dev
# Production
node dist/index.js
特性旗
| 工具 | 说明 |
list_feature_flags | 列出带有搜索和页标的所有特征标记 |
get_feature_flag | 用 ID 获取特定旗帜的细节 |
create_feature_flag | 创建带有可选推出百分比的新旗帜 |
update_feature_flag | 更新旗帜密钥、 名称或活动状态 |
delete_feature_flag | 用 ID 删除特性旗 |
实验
| 工具 | 说明 |
list_experiments | 列出所有 A/B 试验 |
get_experiment | 获得包括变体和计量的实验细节 |
透视与分析
| 工具 | 说明 |
list_insights | 列出保存的见解(趋势、漏斗、保留等) |
get_insight | 通过身份识别获得具体见解 |
create_insight | 在仪表板上创建新的洞察力并选择添加 |
execute_sql | 执行针对 PostHog 数据的 HogQL 查询 |
execute_query | 运行结构化查询( TrendsQuery, FunnelsQuery, ReleaseQuery等) |
盘子
| 工具 | 说明 |
list_dashboards | 列出所有可选择搜索的仪表板 |
get_dashboard | 获得包括瓷砖在内的仪表板细节 |
事件属性( P)
| 工具 | 说明 |
list_event_definitions | 列出所有跟踪事件类型 |
list_property_definitions | 列表事件或个人财产定义 |
个人和组合
| 工具 | 说明 |
list_persons | 通过电子邮件、名称或识别身份搜索用户 |
list_cohorts | 列出所有组( 用户段) |
说明
| 工具 | 说明 |
list_annotations | 列出所有图表注释 |
create_annotation | 创建新注释标记 |
调查和早期获取
| 工具 | 说明 |
list_surveys | 列出所有调查 |
list_early_access_features | 列出早期访问功能 |
组织搜索( S)
| 工具 | 说明 |
list_projects | 列出当前 API 密钥的所有工程 |
search | 搜索所有 PostHog 实体 |
HogQL 示例
过去7天的每日活动计数:
SELECT toDate(timestamp) as day, count() as events
FROM events
WHERE timestamp > now() - INTERVAL 7 DAY
GROUP BY day ORDER BY day
浏览器独有的用户 :
SELECT properties.$browser as browser, uniq(distinct_id) as users
FROM events
WHERE event = 'pageview' AND timestamp > now() - INTERVAL 30 DAY
GROUP BY browser ORDER BY users DESC
日常活动用户 :
SELECT toDate(timestamp) as day, uniq(distinct_id) as dau
FROM events
WHERE timestamp > now() - INTERVAL 30 DAY
GROUP BY day ORDER BY day
程序用途
import { PostHogMCPServer } from "@arvoretech/posthog-mcp";
const server = new PostHogMCPServer({
baseUrl: "https://posthog.example.com",
apiKey: "phx_your_key",
projectId: "1",
});
server.setupGracefulShutdown();
await server.start();
Claude 桌面/ Kiro 集成
{
"mcpServers": {
"posthog": {
"command": "npx",
"args": ["-y", "@arvoretech/posthog-mcp"],
"env": {
"POSTHOG_BASE_URL": "https://posthog.example.com",
"POSTHOG_API_KEY": "phx_your_personal_api_key"
}
}
}
}
发展
pnpm install
pnpm dev
pnpm build
pnpm lint
限制
- 只有地铁运输(无HTTP/WebSocket)
- HogQL 查询按设计只读( PostHog API 限制)
- 需要个人 API 密钥( X)
phx_ 前缀,不是工程 API 密钥