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 32PARTNER_API_KEYS 格式(JSON对象):
{"": "
", "": "
"}本地开发
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-mcpDocker Compose
cp .env.example .env
# Edit .env: set PARTNER_API_KEYS and IMAGE
docker compose up -dKubernetes/Helm
不要使用 --set 为了 partnerApiKeys --Helm解释 {, },以及 , 作为特殊的语法,它会破坏JSON。请改用值文件:
# my-values.yaml
partnerApiKeys: '{"":"
"}'
service:
type: ClusterIP # or NodePort / LoadBalancerhelm install etracker-mcp ./helm -f my-values.yaml入口
# my-values.yaml
partnerApiKeys: '{"":"
"}'
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": "",
"X-ET-Token": ""
}
}
}
}