Skip to content
cccskills
FreePublished on GitHub

mcd-event-radar

麦麦活动雷达——查「附近有什么麦当劳活动」「周末去哪家麦麦主题活动」「某城市的生日派对/主题派对/体验营/品鉴会/读书会及可预约场次」,并可把结果生成卡通活动地图(门店位置取自官方经纬度)。

首次使用自动引导申请官方 Token 并一键配置连接器,支持城市级位置检测;区分「已核实可预约场次」与「活动线索待核实」,用户确认后才创建主题活动订单。

The English summary is being prepared. Showing the original description.

Zafer-Liu/mcd-event-radar91 stars(GitHub 91 + cccskills 0)

Run score Not tested

See how to install

Files included (8)

  • SKILL.md12.4 KB
  • scripts/check-connector.mjs10.0 KB
  • scripts/lib/html-map.mjs48.2 KB
  • scripts/lib/mcp-client.mjs4.8 KB
  • scripts/live.mjs9.8 KB
  • scripts/locate.mjs4.6 KB
  • scripts/radar.mjs12.0 KB
  • scripts/setup-connector.mjs8.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

麦麦活动雷达

回答「附近有什么麦当劳活动」「周末能去哪个麦麦主题活动」「帮我查某城市的派对或品鉴会」等问题。数据全部来自麦当劳中国官方 MCP(mcd-mcp 连接器),并配套直连命令行作为兜底。

红线:不得用网页搜索、模型记忆、examples/sample-events.json 或任何推测数据冒充实时 MCP 结果。查不到就说查不到,并说明已查范围与缺失环节。

初次使用 · 小白三步走(未配置时必走)

第 0 步自检发现「未配置」时,按下面流程引导,全程不需要用户编辑任何 JSON:

第 1 步 · 获取 Token(约 1 分钟)

把下面这段话原样发给用户:

打开麦当劳 MCP 开放平台:https://open.mcd.cn/mcp/doc ① 点右上角【登录】,用手机号验证登录; ② 登录后「登录」按钮变成「控制台」,点它; ③ 在弹出的控制台弹窗里点【激活】按钮,申请 MCP Token; ④ 同意服务协议; ⑤ Token 出现后点【一键复制】,直接粘贴到这个对话里发给我。 ⚠️ Token 等同于账号凭证:只发在这条对话里,不要发到群聊、朋友圈或 GitHub。

第 2 步 · 自动配置(用户贴出 Token 后立即执行)

用内置一键脚本写入 WorkBuddy 私有配置(自动备份原文件、保留已有服务器、在线验证 Token)。命令(<skill目录> 指本 Skill 的 base directory):

MCD_MCP_TOKEN='<用户贴的Token>' node "<skill目录>/scripts/setup-connector.mjs"

PowerShell 环境改用:$env:MCD_MCP_TOKEN='<Token>'; node "<skill目录>/scripts/setup-connector.mjs"; Remove-Item Env:\MCD_MCP_TOKEN

  • 脚本输出含在线验证结果(服务名、工具数、核实链是否齐全)与「还差两步」提示,把结论转述给用户。
  • Token 安全:只允许通过该脚本写入用户本机的 ~/.workbuddy/mcp.json;不得在回复、示例、记忆文件、日志或仓库文件中回显或保存 Token。
  • 若验证提示 Token 无效(401):请用户回平台重新申请,再跑一次脚本覆盖即可。

第 3 步 · 激活(WorkBuddy 平台要求,约 30 秒,无法跳过)

① 连接器管理页 → 自定义连接器 → 对 mcd-mcp 点「Trust」; ② 聊天窗口左下角「+」菜单 → 启用 mcd-mcp; ③ 重开一轮会话,再说「查活动」。

当前会话立即出结果的兜底:配置已写入但工具尚未加载时,可先用直连脚本查一次(同样是官方 MCP、真实数据):

MCD_MCP_TOKEN='<Token>' node "<skill目录>/scripts/live.mjs" --city <城市> [--from YYYY-MM-DD] [--to YYYY-MM-DD] --output events.local.json

输出为归一化 JSON(含门店经纬度与地址元数据),随后按「输出样式」一节用 radar.mjs 生成 HTML 活动地图呈现,并提醒用户重启后即可纯对话查询。

第 0 步 · 连接器自检(每次查询前必做)

  1. 用 ToolSearch 按工具名精确检索:campaign-calendar、mall-points-products、mall-product-detail、query-party-city、query-party-store、query-party-store-date、query-party-store-session。检索到即视为可用,直接进入查询流程。(注:日期/场次两个工具以线上实际命名为准;官方文档写作 query-partystore-date / query-partystore-session,两处都试。)
  2. 检索不到 → 调用 list_installed_plugins 看是否有 mcd-mcp 及其 bound / enabled 状态。
  3. 仍然没有 → 读 ~/.workbuddy/mcp.json(Windows 为 %USERPROFILE%\.workbuddy\mcp.json)看 mcpServers 下有无 mcd-mcp 条目。
检查结果状态处理方式
工具可检索到可用进入查询流程
配置里有条目,但工具检索不到已配置未生效请用户在连接器管理页对 mcd-mcp 点「Trust」,在聊天窗口左下角「+」菜单启用,并重开一轮会话;期间可用 live.mjs 兜底
配置里没有条目未配置走上方「小白三步走」

「附近」与城市识别(需用户确认)

按优先级取城市:

  1. 用户本轮明确给出的城市 → 直接使用。
  2. 用户问「附近 / 我周围」但没给城市 → 征得用户一句同意后,运行 node "<skill目录>/scripts/locate.mjs"(城市级 IP 定位,不收集精确坐标),把检测到的城市向用户确认一次,例如「检测到你在杭州,按杭州查?」。脚本检测到海外出口(VPN/代理)会明确提示——此时直接请用户报城市。
  3. 用户长期记忆中的常驻城市 → 作为待确认的默认值提出一次。
  4. 以上都没有 → 请用户提供城市。

无论如何,检测或记忆得到的城市都必须经用户确认或纠正后才用于查询;不做商圈、行政区、门店级定位,也不把检测到的位置写入记忆。

日期:用户未给日期时,默认查询未来 14 天(北京时间)并明确告知该范围;用户给了就按用户的。

查询流程

  1. 提取城市、日期范围、活动类型和出行偏好。
  2. 调用 campaign-calendar 获取活动线索。该工具无参数时查当前月;指定日期不在当前月时,按官方 specifiedDate 参数查目标日期附近三天,必要时分段覆盖。其结果只证明活动信息,不证明某门店有可预约名额。
  3. 调用 mall-points-products,用官方类目 catRuleIds=1>6>20,1>6>21,1>6>22,1>6>25,1>6>34 查生日派对、主题派对、体验营、品鉴会、读书会等活动商品;按需调用 mall-product-detail 获取真实 spuId、skuId、活动说明和适用人数。不要从标题猜测商品编码。
  4. 用 spuId 调用 query-party-city 找到用户城市的真实 code;再用 spuId + 城市 code 调 query-party-store;随后用 spuId + storeCode 调 query-party-store-date,最后用 spuId + storeCode + dateStr 调 query-party-store-session 核实场次。参数类型与字段含义以运行时 schema 为准,勿混用城市 code、门店 code 和场次 id。
  5. 控制查询范围:优先覆盖用户城市、日期、活动类型和最多 5 家候选门店,需要时再扩大。某步骤未返回数据就停止该分支,不编造后续结果。
  6. 对每个结果记录名称、城市、门店、日期、场次、剩余名额、预约状态、价格或费用、来源工具和查询时间。只有 query-party-store-session 明确返回 leftNum > 0 才可标为「有名额」。价格展示原始值;live.mjs 会用 mall-product-detail 同商品价格(元)交叉核实场次 price 单位(2026-10-09 实测 11/11 商品倍率恒为 ×100,即单位为分),核验一致时标注「单位分 + 约价 ¥xx」,不一致时自动回退「单位待核实」,不做无依据换算。不同工具信息矛盾时,以更具体且更新的场次结果为准并说明冲突。
  7. 展示「已核实可预约场次」与「活动线索/待核实」两组,排序:明确可预约 > 日期更近 > 匹配偏好。说明推荐理由与数据获取时间。无结果时说明已查范围与缺失环节,建议调整条件。
  8. 查询完成后,按「输出样式」用 radar.mjs --format html 生成卡通活动地图(含活动卡片)作为可视化交付物,聊天回复只保留简洁摘要。

预约边界

默认只查询。party-order-create 会创建订单;仅当用户明确要求预约或下单,并已看到和确认活动、城市、门店、日期、场次、人数、费用后才调用。所需 spuId、skuId、城市 code、storeCode、partyType、场次 id、起止时间、leftNum 和 count 均来自实际工具结果或用户明确提供的人数。若无法确认费用单位,不得创建订单。若工具返回仍需支付,把支付链接及金额原样告知用户,由用户自行完成支付。不得擅自调用普通点餐、领券、积分兑换或抽奖工具。

输出样式 · HTML 活动地图(默认交付物)

查询得到已核实场次后,把结果整理成自包含 HTML 卡通活动地图(门店小屋按官方经纬度投影落位、辖区区块、街道标签、活动卡片面板与日期/活动/状态筛选),并用 present_files 展示给用户:

node "<skill目录>/scripts/radar.mjs" --input <归一化JSON> --city <城市> [--from YYYY-MM-DD] [--to YYYY-MM-DD] [--districts @辖区映射.json] --output <活动地图.html>
  • 输入是 live.mjs 的归一化 JSON(含 stores 门店元数据)。radar.mjs 默认 --format html;--format md / --format json 仍可用于纯文本清单或结构化导出。
  • --districts 可选:传 { "门店名": "辖区名" }(内联 JSON 或 @文件)用于地图区块标注。辖区名可依据你对门店地址/位置的了解给出,属示意标注——门店位置始终取官方经纬度,不受影响。不传时按门店聚簇自动划片并按方位命名(如「西北片区」)。
  • 地图不调用任何在线地图服务:门店相对位置由官方 query-party-store 返回的经纬度线性投影,辖区、道路、公园均为卡通示意,页面已标注「卡通示意图 · 非精确地图」。不要向用户宣称区块是精确行政区划边界。
  • 聊天回复仍需简洁列出查询条件、获取时间与推荐场次(区分「可预约」与「待核实」;价格展示:已核实单位为分的显示约价 ¥xx 并保留原始值,未核实的显示原始值+「单位待核实」);地图是可视化交付物,不替代文字摘要。0 场次时地图会显示空态页,文字说明已查范围与建议。

排障速查

现象先查什么
一个麦当劳工具都检索不到走第 0 步;多数是未配置(走三步走)或未点「Trust」
连接器已启用但工具仍不出现重开一轮会话;用 live.mjs 兜底查询
调用返回 HTTP 401 / 403Token 失效或权限不足:请用户到 https://open.mcd.cn/mcp/doc 重新申请,重跑 setup-connector.mjs 覆盖;不要反复重试
调用返回 HTTP 429触发限流(每 Token 每分钟 600 次):暂停片刻再查,别加大并发
定位结果是海外城市VPN/代理出口,不是真实位置;直接请用户报城市
工具名与文档不一致以 tools/list 实际返回为准(线上日期/场次工具为 query-party-store-date / query-party-store-session)
只有活动日历、没有门店场次正常现象,日历不等于名额;按流程走门店链,走不通就归为「待核实」
某商品在该城市查不到门店该活动未在该城市开放,停止该分支,换下一个候选商品

内置脚本(位于本 Skill 目录 scripts/ 下)

  • setup-connector.mjs:一键配置——写入 ~/.workbuddy/mcp.json(自动备份、保留其他服务器)并在线验证。Token 来源:MCD_MCP_TOKEN 环境变量 / --token 参数 / 交互式隐藏输入。全程不打印 Token。
  • check-connector.mjs:连接器体检(--online 需 MCD_MCP_TOKEN,核对工具覆盖;--json 结构化输出),不打印凭证。
  • locate.mjs:城市级 IP 定位(ipinfo.io 主、api.ip.sb 备),识别海外/代理出口并提示;--json 输出结构化结果。
  • live.mjs:直连官方 MCP 查询主题活动场次,需 MCD_MCP_TOKEN;输出包含 query-party-store 返回的门店经纬度与地址(供地图定位)。没有连接器、或当前会话工具未加载时的兜底路径。
  • radar.mjs:校验、去重、筛选并整理查询结果——默认生成自包含 HTML 卡通活动地图(门店小屋 + 辖区区块 + 活动卡片 + 筛选联动,零外部依赖、离线可打开),也可 --format md / --format json 输出清单。只处理归一化字段。字段格式见 examples/sample-events.json,该文件是虚构演示数据,绝不可作为实时查询结果。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Report a problem with this skill