数据分析API服务

etracker MCP Server 是一个暴露etracker分析API的模型上下文协议服务器,适用于AI助手和数据分析场景。

  • by fmeies
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 fmeies/etracker-mcp

使用说明

etracker MCP服务器

一个MCP(模型上下文协议)服务器,向人工智能助手公开etracker分析API。合作伙伴通过HTTP/SSE进行连接,并使用自己的API密钥加上每个请求传递的etracker帐户令牌进行身份验证。

建筑

  • 运输: 流式HTTP(HTTP+SSE上的MCP)
  • 认证: 双头方案-- X-Api-Key (合作伙伴密钥)+ X-ET-Token (etracker帐户令牌)
  • 速率限制: 三层桶——爆裂防护(8个要求/10秒),全局窗口(40个要求/5分钟),每个合作伙伴窗口(20个要求/5 min)
  • 会议: 在内存中,每个MCP会话的作用域。运行多个副本时需要会话关联性(ClientIP)。

端点

方法 路径 身份验证
GET /health 没有
ALL /mcp 必填项

工具

工具 说明
list_reports 列出该帐户的所有可用etracker报告
get_report_info 返回报告的可用属性和关键数字
get_report_metadata 返回原始列定义(类型、可排序、可过滤标志)
get_pageviews Web分析数据(默认报告:EATime)
get_conversions 转换和电子商务数据(默认报告:EAConversions)
get_ad_performance 营销/广告渠道绩效(默认报告:EAM营销)
get_report_data 通用工具——使用过滤器从任何报告中获取数据
compare_periods 比较两个日期范围之间的度量

所有数据工具均接受 from/to (YYYY-MM-DD,最长90天),可选 attributes 和 figures (每个最多5个), limit/offset,以及 sort_column/sort_order.

认证

etracker令牌是 不 存储在服务器中——合作伙伴通过以下方式按请求传递它 X-ET-Token。服务器仅存储合作伙伴API密钥到合作伙伴ID的映射。

生成合作伙伴密钥:

openssl rand -hex 32

PARTNER_API_KEYS 格式(JSON对象):

{"<key>": "<partner-id>", "<key2>": "<partner-id2>"}

本地开发

cp .env.example .env
# Edit .env and set PARTNER_API_KEYS
npm install && npm run dev

码头工人

docker build -t etracker-mcp .
docker run -p 3000:3000 \
  -e PARTNER_API_KEYS='{"mykey":"partner-a"}' \
  etracker-mcp

Docker Compose

cp .env.example .env
# Edit .env: set PARTNER_API_KEYS and IMAGE
docker compose up -d

Kubernetes/Helm

不要使用 --set 为了 partnerApiKeys --Helm解释 {, },以及 , 作为特殊的语法,它会破坏JSON。请改用值文件:

# my-values.yaml
partnerApiKeys: '{"<key>":"<partner-id>"}'
service:
  type: ClusterIP  # or NodePort / LoadBalancer
helm install etracker-mcp ./helm -f my-values.yaml

入口

# my-values.yaml
partnerApiKeys: '{"<key>":"<partner-id>"}'
ingress:
  enabled: true
  className: nginx
  host: etracker-mcp.example.com
  tls: true
  tlsSecretName: etracker-mcp-tls

所有Helm值

值 默认值 描述
partnerApiKeys "" JSON对象将API密钥映射到合作伙伴ID
replicaCount 1 副本数量(会话关联处理路由)
image.repository etracker-mcp 容器图片
image.tag latest 图像标签
service.type NodePort 服务类型
service.nodePort 30300 节点端口值(30000–32767)
service.sessionAffinityTimeoutSeconds 3600 会话粘性超时
ingress.enabled false 启用入口
ingress.host etracker-mcp.example.com 入口主机名
ingress.tls false 启用TLS
etrackerReports.pageviews EATime 覆盖默认页面浏览量报告ID
etrackerReports.conversions EAConversions 覆盖默认转换报告ID
etrackerReports.ad EAMarketing 覆盖默认广告报告ID
resources.requests.cpu 100m CPU请求
resources.requests.memory 128Mi 内存请求
resources.limits.cpu 500m CPU限制
resources.limits.memory 256Mi 内存限制

MCP客户端配置

{
  "mcpServers": {
    "etracker": {
      "url": "https://etracker-mcp.example.com/mcp",
      "headers": {
        "X-Api-Key": "<your-partner-key>",
        "X-ET-Token": "<your-etracker-token>"
      }
    }
  }
}