游戏球MCP服务器
MCP(模型上下文协议)服务器,用于通过AI代理管理Gameball忠诚度计划配置。多租户——每个请求都使用从Gameball仪表板生成的个人访问令牌(PAT)进行身份验证。
设置
npm install
npm run build
npm start服务器启动于 :8080 (用覆盖 PORT=...)并在以下位置暴露单个端点 POST /mcp.
认证
每个请求都必须包括呼叫者的PAT X-GB-Access-Token 头球MCP服务器将其传递给Gameball后端,Gameball后端验证令牌并应用附加的作用域规则。
POST /mcp HTTP/1.1
Content-Type: application/json
X-GB-Access-Token: gbpat_your_token_here
{ "jsonrpc": "2.0", "method": "tools/list", "id": 1 }配置
| 环境变量 | 必填 | 说明 |
|---|---|---|
PORT | 无 | HTTP端口。默认为 8080. |
GAMEBALL_BASE_URL | 否 | 游戏球API基本URL。默认为 https://api.gameball.co. |
CODEX_PATH | 否 | 包含每个工具代码的本地目录 *.md 文档。未设置时,捆绑 build/tools/codex/ 使用服务器附带的。 |
CODEX_REPO | 没有 | codex文档仓库的Git URL。当设置为 CODEX_PATH,如果缺少,服务器将在启动时克隆到该路径中,否则将提取最新路径 CODEX_REF. |
CODEX_REF | 否 | 分支/标记/提交跟踪。默认为 main. |
CODEX_WEBHOOK_PORT | 没有 | TCP端口 POST /admin/codex-sync.默认为 0 (残疾)。 |
CODEX_SYNC_KEY | 否 | 需要启用 /admin/* webhook监听器。呼叫者必须发送匹配的 X-GB-Sync-Key 头球未设置时,侦听器不会启动。 |
价值观可以来自 docker run -e KEY=value, --env-file,或JSON加载器位于 src/environments/environment[.].json。参见 技术_培训_测试.md 对于完整的配置模型和优先级规则。
工具代码
每个工具都附带了详细的参考文档 src/tools/codex/.md。这些文件是 未通过MCP暴露 --它们是通过codex管理端点出现的仅限操作员/管理员的工件(请参阅codex同步部分)。共享指令块({{> template_flow}}, {{> core_required}}, {{> update_flow}})定义见 src/tools/shared.ts 当管理文件端点为文档提供服务时,将其内联。
看 TOKEN_MEASURENT.md 如何衡量储蓄。
可用工具集
实用工具(7)
| 工具 | 说明 |
|---|---|
get_supported_languages | 客户支持的语言,包括ID、代码、方向 |
get_collections | 具有collectionId的产品集合用于限制规则 |
get_tags | 标签、片段、带有ID和类型的RFM,用于受众定位 |
get_customer_attributes | 使用键和数据类型自定义客户属性 |
get_events | 带有元数据字段和ID的事件(触发器),用于创建活动 |
get_merchants | 具有外部ID、名称和分支机构的商家 |
get_icons | 徽章/图标库,用于选择奖励和等级的视觉效果 |
方案2
| 工具 | 说明 |
|---|---|
get_program_activation | 检查忠诚度计划是否处于活动状态(GbEnabled) |
toggle_program_activation | 启用/禁用整个忠诚度计划 |
VIP等级(2)
| 工具 | 说明 |
|---|---|
get_tiers | 列出带有ID、名称、顺序和分数阈值的VIP级别 |
get_tier_details | 单层的完整细节——包括奖励配置、地区、图标 |
赎回选择权(6)
| 工具 | 说明 |
|---|---|
get_redemption_options | 列出所有兑换规则(slim:id、姓名、类型、积分、isVisible) |
get_redemption_option | 按ID列出单个规则的完整详细信息 |
create_redemption_option | 创建新规则(固定、百分比、免费送货、免费产品、自定义) |
update_redemption_option | 按ID更新现有规则 |
toggle_redemption_option_activation | 按ID激活/停用规则 |
delete_redemption_option | 按ID删除规则(受一般规则保护) |
奖励活动(16)
模板第一流:调用 get_campaign_template 首先,只修改用户想要的字段,然后调用相应的分组创建工具。
| 工具 | 说明 |
|---|---|
get_campaign_template | 按类型名称获取种子模板。返回具有所有默认值的完整对象。 |
get_reward_campaigns | 使用分页+仪表板奇偶校验过滤器列出活动 |
get_reward_campaigns_count | 与筛选器匹配的活动总数 |
get_reward_campaigns_stats | 列出活动,并预先汇总每个活动的成就计数 |
get_reward_campaign | 按ID列出单个活动的完整详细信息 |
get_reward_campaign_customers | 列出特定活动的成就记录 |
get_reward_campaign_customers_count | 特定活动的成就记录计数 |
create_game_campaign | 游戏活动:SpinTheWheel、SlotMachine、ScratchAndWin、测验、火柴卡、捕手、TicTacToe、太空射击、拼图、TapTheTarget、DrivingGame |
create_event_campaign | 事件触发的活动:基于事件、SpendingMilestone |
create_date_campaign | 日期触发的活动:基于日期(生日、加入日期、自定义属性) |
create_mission | 任务活动:非连续任务 |
create_calendar_campaign | 日历活动:每天父容器+子活动 |
create_newsletter | 通讯订阅活动(必须创建非活动) |
update_reward_campaign | 按ID更新现有活动 |
toggle_reward_campaign_activation | 按ID激活/停用活动 |
delete_reward_campaign | 按ID删除活动和所有子实体 |
小部件设置(5)
总是打电话 get_widget_settings 首先,更新使用AutoMapper合并,因此空值会擦除现有值。
| 工具 | 说明 |
|---|---|
get_widget_settings | 完整的小部件配置:品牌、常规、访客、功能切换 |
update_widget_style | 更新品牌:颜色、主题、字体、图标、启动按钮 |
update_widget_settings | 更新普通+客人:可见性、功能、推荐、消息传递、链接 |
update_widget_sorting | 更新活动、任务和兑换排序偏好 |
update_supported_languages | 添加、删除或更改默认语言 |
收入(8)
| 工具 | 说明 |
|---|---|
get_earning_config | 阅读一般收入配置(费率、货币、到期、待定、运费/免税额) |
update_earning_config | 更新一般收入配置 |
get_earning_rules | 列出默认收入规则 |
update_earning_rules | 更新默认收入规则 |
create_custom_earning_rule | 使用3种奖励模式之一创建自定义赚取规则 |
get_custom_earning_rules | 列出自定义收入规则 |
update_custom_earning_rule | 更新自定义收入规则 |
delete_custom_earning_rule | 删除自定义收入规则 |
客户(7)
| 工具 | 说明 |
|---|---|
get_customers | 列出具有分页和18种筛选类型的客户 |
get_customers_count | 总客户数(总客户数、活跃客户数、非活跃客户数) |
get_customer_details | 按ExternalId(customerId)获取完整的客户资料 |
add_customer_points | 将积分或货币金额添加到客户的余额中 |
deduct_customer_points | 从客户余额中扣除积分或货币金额 |
assign_customer_tags | 按游戏球ID为一个或多个客户分配标签 |
remove_customer_tags | 按游戏球ID从一个或多个客户中删除标签 |
分析(1)
| 工具 | 说明 |
|---|---|
get_analytics_chart | 从90个图表目录(8个仪表板页面,6种图表类型)中提取一个分析图表。必修的: chartName, from, to. |
建筑
AI Agent (Claude, Cursor, etc.)
+-- HTTP POST /mcp (Streamable HTTP transport)
+-- gameball-mcp (this server)
+-- per-request McpServer + GameballAPIClient (scoped to caller's PAT)
+-- HTTP (X-GB-Access-Token header)
+-- Gameball API (/api/v4.0/mcp/*)根据请求,服务器实例保证用户之间没有状态泄漏。
健康
GET /healthz 回报 200 { "status": "ok" } 用于编排器探测。
发展
npm run dev # Watch mode (recompiles on change)
npm run build # One-time build
npm start # Run the server