使用说明
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>"
}
}
}
}