by yurenpai
麦当劳积分资产管家:剔假上架 · 性价比排序 · 抽奖参谋
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
# Add to your Claude Code skills
git clone https://github.com/yurenpai/mc-points-stewardGuides for using ai agents skills like mc-points-steward.
See how mc-points-steward compares with popular alternatives.
一个替你打理麦当劳积分资产的 WorkBuddy Skill —— 查得清账、剔得掉假、算得出值、守得住手。
27 件积分类商品里,18 件是假上架;9 件真能兑的,没有一件是纯积分白拿。
↑ 横幅数字来自真实调用快照实算,可复现。
↑ 积分资产体检报告卡,数字与脚本输出同源。
打开麦当劳 App 的积分商城,一次默认查询返回 50 件商品——
其中 26 件是现金商品(派对、品鉴会、体验营,point=0),与积分无关;
真正的积分商品只有 24 件。
而这 24 件还不是全部:按 catRuleIds 逐一查询再合并,积分类实际有 27 件。
标着 status=2(上架)的积分商品 27 件
├─ 真能兑(下架时间还没到) 9 件 ✅
└─ 名存实亡(下架时间早已过去,仍显示上架) 18 件 ☠️ 占 67%
更要命的是三件"你以为是这样、其实不是"的事:
| 陷阱 | 现象 | 后果 |
|---|---|---|
| 隐藏现金成本 🔴 | 真可兑 9 件,没有一件是纯积分白拿的——「3.9元圆筒冰淇淋」100 分换的只是一张券,到店还要再付 3.9 元 | 以为白拿,实际掏钱 |
| 同名陷阱 | 「10.9元指定小食任选」有两个 spuId:100 分 和 200 分,名字一字不差 | 界面上分不出来该选哪个 |
| 默认查询漏报 | 不带 catRuleIds 查商城,会漏掉 2 件真能兑的商品(3.9元圆筒冰淇淋、16.9元2份麦辣鸡翅) |
少报 22% 的可兑选项 |
麦享掌柜把这些全部算清楚,再摆到你面前。
积分是"沉默资产"。 大多数人不知道自己有多少分、什么时候过期、换什么划算,直到过期清零。
更难的是——商城界面本身不可信:
Nike Book 2 麦当劳特别联名款(8888 分)仍显示"上架",但它的兑换窗口是
2026-06-05 14:00 ~ 16:00,只有两小时,早已结束。系统不改变 status 字段。skuList[].extTradePrice,列表接口里根本没有这个字段——
不调 mall-product-detail 就永远看不到。price 字段恒为 "0",商品名里的数字
("6.9元可乐麦炫酷" → 6.9 元)其实是券后支付价,不是市价。不解析就无法比较。麦享掌柜的价值不在于"帮你下单",而在于把这套失真的数据还原成可信的账。
2026-10-12 对 9 件真可兑商品逐一调详情后排序(数值越小越划算):
积分 商品 分/元 到店另付
50 6.9元可乐麦炫酷 7.25 ¥6.9 ← 最划算
50 6.9元香芋派/菠萝派任选 7.25 ¥6.9
100 10.9元指定小食任选 9.17 ¥10.9 兑:中薯条/奥利奥麦旋风
200 16.9元2份麦辣鸡翅 11.83 ¥16.9
200 10.9元指定小食任选 18.35 ¥10.9 兑:麦乐鸡-4块/麦辣鸡翅-2块/鸡排
100 3.9元圆筒冰淇淋 25.64 ¥3.9
500 17.9元板烧可乐组合 27.93 ¥17.9
500 16.9元麦辣可乐组合 29.59 ¥16.9
800 21.9元巨无霸可乐组合 36.53 ¥21.9 ← 最贵
同样是花积分,最划算和最贵的单位成本差 5.04 倍。而这个差异,App 里看不出来。
⚠️ 上表「分/元」的口径:分母是券面价(到店支付价),不是商品市价。 MCP 不提供原价,因此本 Skill 不计算"真实折扣率"——宁可不算,也不编造。 它的用途是横向比较"同样 1 元券面价,哪件吃得积分最少"。
git clone https://github.com/yurenpai/mc-points-steward.git
cd mc-points-steward
python skill/scripts/demo.py
纯标准库、不联网。数据来自 skill/tests/fixtures/ 下 2026-10-12 真实调用快照。
也可直接打开 在线演示页。
把 skill/ 整个目录放到 WorkBuddy 的 skills 目录下:
# 用户级(所有项目可用)
cp -r skill/ ~/.workbuddy/skills/mc-points-steward/
# 或用仓库自带的安装校验脚本(含冒烟测试)
cd skill && python tests/test_install.py --install --smoke
在 WorkBuddy 中:左侧【专家·技能·连接器】→【连接器】→【自定义连接器】→【配置 MCP】。
复制 mcp-config.example.json,把 ${MCD_MCP_TOKEN} 换成你自己的 Token:
{
"mcpServers": {
"mcd-mcp": {
"type": "streamablehttp",
"url": "https://mcp.mcd.cn",
"headers": {
"Authorization": "Bearer ${MCD_MCP_TOKEN}"
}
}
}
}
⚠️
Bearer前缀必须有,且后面有一个空格。 实测不带前缀会返回403 校验鉴权authToken必填。 Token 获取:登录 open.mcd.cn → 手机号验证 → 控制台 → 激活 → 复制。
我有多少积分? 积分能换什么?哪个最划算? 积分抽奖值不值得抽?
| # | 功能 | 用到的工具 | 说明 |
|---|---|---|---|
| F1 | 积分账本 | query-my-account |
可用 / 累计 / 已用 / 已过期 / 冻结 / 本月·下月将过期,账目自洽校验 |
| F2 | 商城去伪 | mall-points-products |
逐类目查询并按 spuId 合并,剔除假上架与现金商品 |
| F3 | 性价比榜 | rank_products.py |
从商品名解析券面价,算「分/元」,升序排列 |
| F3+ | 隐藏现金成本 | mall-product-detail |
补出 extTradePrice,标注"到店另付 ¥X"与"是否纯积分" |
| F5 | 兑换下单 | mall-product-detail → mall-create-order |
全程二次确认,绝不擅自扣分 |
| F6 | 抽奖参谋 | query-lottery-info |
奖池结构 + 期望值解读,资格只信 drawDecision |
| F4 | 商品详情 | mall-product-detail |
SKU / 兑换内容 / 隐藏现金成本 |
| F7 | 奖品档案 | query-my-prizes |
中奖记录(区分"确认没有"与"没查到") |
| F8 | 活动日历 | campaign-calendar |
限定情报附属层,仅作补充,不占主线 |
这是 Skill 分层的经典实践,也是本项目的核心工程决策:
| 层 | 职责 | 实现 |
|---|---|---|
| 脚本层 | 过滤、去重、解析、排序、格式化 | scripts/rank_products.py,纯 Python 标准库 |
| Agent 层 | 解读、建议、话术、降级 | SKILL.md 工作流 + 模型推理 |
脚本绝不输出主观判断(不会说"这个划算"),只输出 unit_price、days_left、
cash_on_top、name_traps 这样的确定性事实。好处:结果可复现、可测试、可审计——
357 条断言钉死行为。
规则来自实测:status == 2(上架)但 downTime < now → 名存实亡。
证据:Nike Book 2 联名款的兑换窗口 2026-06-05 14:00:00 ~ 16:00:00,两小时,早已结束,
至今仍返回 status: 2。周边类目(2>8)实测 3 件,100% 已过期。
这条规则把 27 件里的 18 件剔了出去——67% 的"在售"是假的。
mall-points-products 不带 catRuleIds 时返回 50 件,其中 26 件是现金商品(point=0),
积分商品只有 24 件——这 24 件里属于 1>4 商品券类目的仅 22 件。
单独查 catRuleIds=1>4 则返回 24 件。
漏掉的那 2 件,恰好都是真能兑的。 只调一次默认查询,就会少报 22% 的可兑选项。
所以本 Skill 强制逐类目查询 + 按 spuId 合并,并在输出的 coverage 段记录每份输入的增量贡献,
让"数据是否查全"这件事变得可追溯。
extTradePrice(券核销额外支付金额)只存在于 mall-product-detail 的 skuList[] 中,
列表接口 mall-points-products 完全没有这个字段。
2026-10-12 对真可兑的 9 件逐一调详情,结果:
| 指标 | 实测 |
|---|---|
| 真可兑商品 | 9 件 |
| 需到店另付现金 | 9 件(100%) |
| 纯积分白拿 | 0 件 |
| 另付金额区间 | ¥3.9 ~ ¥21.9 |
extTradePrice 与商品名内数字恒等 |
9/9 |
这意味着:「3.9元圆筒冰淇淋」100 分换到的不是冰淇淋,而是一张"以 3.9 元购买冰淇淋"的券。 只看列表就推荐,等于对用户说"100 积分白拿一个冰淇淋"——这是实质性误导。
因此本 Skill 在 W2 流程里强制对每件真可兑商品补调详情,并在榜单每一行显示"到店另付 ¥X"。
未拿到详情时脚本保持 None 而不填 0:宁可不说,不可说错。
这条也顺带纠正了我自己前一版的错误结论:我曾把「10.9元指定小食任选」的 100 分 / 200 分判定为"选错就多付一倍",并建议"选最低分那个"。 查完详情才发现两者兑换内容不同(薯条/麦旋风 vs 麦乐鸡/鸡翅), 而到店另付都是 10.9 元——贵的那个未必是坑。现在改为展示内容差异,让用户按想吃什么选。
实际调用 10 个工具(mcd-mcp 共开放 35 个):
| 工具 | 用途 | 前置 |
|---|---|---|
query-my-account |
积分账本(9 个字段) | — |
mall-points-products |
商城商品列表,按 catRuleIds 逐类目查 |
— |
mall-product-detail |
商品详情 / SKU / extTradePrice 隐藏现金成本 |
spuId |
mall-create-order |
积分兑换下单(未实调,见下) | skuId+spuCategory+用户明确确认 |
query-lottery-info |
抽奖活动与奖池 | — |
draw-lottery |
执行抽奖 | 用户明确说"抽" |
query-my-prizes |
我的奖品 | — |
mall-order-list |
商城订单(实测为空) | — |
campaign-calendar |
当月营销活动日历 | — |
now-time-info |
校时(判过期前必调) | — |
mall-create-order未实际调用——调用即产生真实订单与券码,本项目不代为发起真实交易。 入参契约(skuId/spuCategory/addressId/count,仅支持shopId=2) 与返回字段已从工具 schema 完整确认并记录在references/api_fields.md第 5 节。
详细的入参、返回字段、业务价值与调用链路见 MCP_INTEGRATION.md。
mall-create-order / draw-lottery / cancel-order 是不可逆资产操作,四道闸:
配置文件只使用环境变量占位符 ${MCD_MCP_TOKEN},真实 Token 不出现在仓库任何文件中。
mc-points-steward/
├── README.md 本文件
├── MCP_INTEGRATION.md 参赛必交:MCP 调用说明
├── CONTEST_DECLARATION.md 参赛必交:官方声明(内容不可改)
├── mcp-config.example.json 参赛必交:脱敏配置示例
├── workbuddy.md 参赛必交:WorkBuddy 开发实录
├── LICENSE MIT
├── .github/
│ └── workflows/
│ └── verify.yml CI:每次推送自动跑四层自检(顶部徽章实时反映状态)
├── docs/
│ └── index.html 在线演示页(自包含,可直接部署 GitHub Pages)
├── assets/
│ ├── banner.svg 品牌横幅(深棕底 + 金拱门,README 首图)
│ ├── report-card.svg 积分资产体检报告卡
│ ├── hidden-cost.svg 真可兑 9 件的隐藏现金成本图
│ ├── points-ladder.svg 积分解锁天梯(静态版)
│ ├── demo.gif 终端风演示动图(文字取自 demo.py 实跑)
│ ├── points-ladder.gif 积分解锁天梯(动态版)
│ ├── promo-vertical.png 竖版预览图(1080×1440,数字全部实算)
│ └── promo-square.png 方版预览图(1080×1080,数字全部实算)
├── skill/
│ ├── SKILL.md 技能本体(工作流 / 数据陷阱 / 安全红线)
│ ├── scripts/
│ │ ├── rank_products.py 去伪 + 性价比 + 多类目合并 + 隐藏现金成本 + 同名陷阱 + 积分现值
│ │ ├── lottery_advice.py 奖池解析
│ │ ├── demo.py 离线演示(无 Token 可跑)
│ │ ├── make_banner_svg.py 物料:生成品牌横幅 SVG(数字零手抄)
│ │ ├── make_report_svg.py 物料:生成报告卡 SVG(数字零手抄)
│ │ ├── make_points_ladder.py 物料:生成积分解锁天梯 GIF + SVG(数字零手抄)
│ │ ├── make_promo_png.py 物料:生成竖版/方版预览 PNG(数字零手抄)
│ │ ├── make_demo_gif.py 物料:合成演示 GIF(文字取自实跑输出)
│ │ └── make_demo_page.py 物料:生成 docs/ 在线演示页
│ ├── references/
│ │ ├── api_fields.md 10 个工具的实测字段档案 + 下单契约 + 降级表
│ │ └── templates.md 6 类输出版式
│ └── tests/
│ ├── test_filter.py 14 断言
│ ├── test_rank.py 11 断言
│ ├── test_cat_merge.py 25 断言(钉死「默认查询漏报」)
│ ├── test_hidden_cost.py 42 断言(钉死「0 件纯积分白拿」)
│ ├── test_classify.py 35 断言(钉死「未知状态不臆断」)
│ ├── test_points_value.py 17 断言(钉死「积分现值折算」)
│ ├── test_affordability.py 28 断言(钉死「余额分档 + 过期止损」)
│ ├── test_lottery_cost.py 16 断言(钉死「抽奖机会成本不算期望」)
│ ├── test_report_svg.py 18 断言(钉死「报告卡不崩、数字不漂」)
│ ├── test_demo_gif.py 10 断言(钉死「GIF 选行质量」)
│ ├── test_demo_page.py 18 断言(钉死「演示页自包含」)
│ ├── test_banner_svg.py 27 断言(钉死「横幅品牌元素 + 布局不越界」)
│ ├── test_points_ladder.py 42 断言(钉死「天梯数字实算 + SVG 坐标不越界」)
│ ├── test_promo_png.py 32 断言(钉死「预览图数字实算 + 护栏 + 品牌色」)
│ ├── test_install.py 22 断言(默认自检;--install --smoke 另计)
│ └── fixtures/ 2026-10-12 真实调用快照(已脱敏)
└── tools/
└── verify.py 四层项目自检(一条命令查全部健康度)
mc-points-steward is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by yurenpai. 麦当劳积分资产管家:剔假上架 · 性价比排序 · 抽奖参谋. It has 71 GitHub stars.
mc-points-steward's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/yurenpai/mc-points-steward" and add it to your Claude Code skills directory (see the Installation section above).
mc-points-steward is primarily written in Python. It is open-source under yurenpai on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh mc-points-steward against similar tools.
No comments yet. Be the first to share your thoughts!