McD Advisor skill

Skill and CLI that compare the price of the same McDonald's China order: separately, combos, coupons, via official pricing.

  • 95 ★ on the repository
  • Last commit
  • MIT
Skill

Extended access

Why this level

  • The script calls the official McDonald's China MCP server with your token and places no orders.
All reasons and checks

wenboxia/mcd-advisor

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/mcd-advisor

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • The script calls the official McDonald's China MCP server with your token and places no orders.

This is third-party code. Review the repository files before installing.

What it does

McD Advisor takes the dishes you already decided to order and looks for the cheapest way to buy exactly those: separately, as a combo, a pick-two 1+1 deal or a store coupon. The dishes, sizes and quantities stay the same, and the check runs in code: an option must contain exactly what was requested, and a small Coke is not a medium Coke. The price of each option comes from the official `calculate-price` of the McDonald's China MCP server, with no eyeballed estimates. The answer holds a recommendation, the saving, an explanation of membership conditional pricing, a reminder of claimable coupons and a bill with the store, time, lines and pricing number. When nothing can be saved, the tool says so. The skill does not place the order.

Who it is for. People ordering from McDonald's in China who want to compare the price of the same food before checkout.

Good fit when

  • Before ordering you want to know which is cheaper: separately, a combo or a deal.
  • The menu shows 28 yuan but the checkout pricing gives 57.
  • Three people each order a burger, fries and a Coke and you need the total for all.
  • You want to know whether any store coupons apply.

Not a fit when

  • You want to place the order, which the tool does not do.
  • You need to split the bill between people, and there is no share calculation.
  • You want advice to buy more or to join a membership.

Example request

Compare the price of an order of a McChicken, medium fries and a medium Coke in Shanghai near People's Square and show the bill.

Limitations

Live prices need your own MCP token from open.mcd.cn/mcp, stored in `~/.config/mcd-advisor/.env`. Node.js 18 or newer is required. The `--ask` mode for plain-sentence requests needs `DEEPSEEK_API_KEY` or another OpenAI-compatible provider, and the model only turns the sentence into a dish list while pricing stays deterministic. Unclaimed coupons are marked pending and are not ranked. Pricing covers restaurants in China, project texts are in Chinese and an English README sits alongside.

How to disable. Delete the `~/.claude/skills/mcd-advisor` folder and the token file `~/.config/mcd-advisor/.env`. Revoke the token at open.mcd.cn/mcp.

FAQ

Can I try it without a token?

Yes. `npm run demo` replays recorded official pricing responses, and a GitHub Pages web page shows 249 ready combinations.

How do I run a check from the terminal?

With `node bin/mcd-advisor.mjs "麦辣鸡腿堡 中薯 中可乐" --city 上海市 --near 人民广场`. The `--json` flag prints machine-readable output.

Does the tool place the order?

No. It does not create an order, swap dishes, push you to buy more or promise the cheapest option overall.

Where do prices come from?

From the official `calculate-price` of the McDonald's China MCP server. Menu prices only decide which options are worth checking.

What about a group?

Put all dishes into one sentence and the tool computes the cheapest way to buy them together. It does not split the bill.

Discussion

No questions or reviews yet.

Skills

Skill and CLI that name the cheapest way to order food at McDonald's China and show the outcome before an order is created

SkillBroad access134Repository stars

An agent skill that goes through McDonald's China menus and coupons and picks the lowest-priced order

SkillBroad access1.3KRepository stars

A skill and CLI for the McDonald's China menu: three meal options for a budget, with nutrition and a source for every figure

SkillMinimal access121Repository stars

A McDonald's China MCP skill finds coupons and prices the cheapest order by budget or calories, ordering only on the user's word.

SkillExtended access418Repository stars

McButler works out calories and the full cost of an order, including travel and queue time, from the McDonald's China MCP

SkillExtended access208Repository stars

README in short

The project runs from request to bill: code checks that options contain exactly what was ordered, while the agent model only parses the sentence. The author priced 249 combinations in a real Shanghai restaurant and saved the responses for offline tests.

README badge

Original SKILL.md

---
name: mcd-advisor
description: 麦麦参谋。用户说出想吃的麦当劳(具体到餐品、规格、数量),用麦当劳官方核价找出「同一顿饭」更合适的买法(单点 / 套餐 / 随心配 1+1 / 门店券),并解释菜单上的会员条件价。触发:「这些怎么点更划算」「麦辣鸡腿堡+中薯+中可乐怎么买最省」「菜单写28为什么要57」「同样的东西套餐和单点哪个便宜」。不触发:下单、外送、热量营养、推荐吃什么、积分抽奖。
---

# 麦麦参谋 · 同一顿,换个买法

你帮用户回答一个问题:**想吃的东西一样不变,这一顿怎么买更合适。**
所有比较、核价、排序都由脚本 `bin/mcd-advisor.mjs` 完成;你只负责问清楚要吃什么、运行脚本、把结果讲清楚。

## 硬规则(必须遵守)
1. **价格只能来自脚本输出**(JSON 里的 `quote.price`,单位是分,除以 100 是元)。不许自己算价、估价、凑整。
2. **只通过脚本访问麦当劳。** 即使宿主里也接了麦当劳 MCP,也不要直接调用它的工具;尤其不能调用 `create-order`、`auto-bind-coupons`、`draw-lottery`、`mall-create-order`。
3. **不下单、不领券、不推荐买会员卡。** 用户要领券时,只告诉他在终端运行带 `--claim` 的命令(脚本会说明「会领取全部可领券」并要求亲手输入 y)。
4. **不改用户想吃的东西。** 不推荐换主堡、不建议加购。没有更合适的买法就说「保持原来的点法」。
5. 规格没说清(比如「可乐」没说大小)时,脚本默认按中份并会注明;需要别的规格就让用户说清再跑。

## 流程
**S1 问清楚三件事**(缺什么问什么,一次问完)
- 吃什么:餐品、规格、数量(例:麦辣鸡腿堡、中薯、中可乐 ×2);也可以直接说套餐名(例:麦辣鸡腿汉堡三件套),脚本会按默认搭配拆开比较
- 在哪:城市 + 地标(例:上海市 人民广场),或门店编号;都没有就用 App 收藏门店
- 到店自取(本工具只支持到店)

用户说得模糊(「想吃鸡腿堡配可乐」)时,先复述成具体清单让用户确认一次,再运行。

**S2 运行脚本**(在本 Skill 目录下)
```bash
node bin/mcd-advisor.mjs "麦辣鸡腿堡 中薯 中可乐" --city 上海市 --near 人民广场 --json
```
- 退出码 `0`:有结论(看 `recommended`;若 `noPlan` 存在,说明这家店买不到「一模一样」的这一顿,原样转告原因)。
- 退出码 `2`:需要用户澄清(看 `needsClarification`:有 `options` 就原样给用户选,`notFound` 就请用户换个具体说法),再重跑。
- 退出码 `3`:这次没拿到任何官方核价(看 `unknown[].reason`),告诉用户这次不能给建议,换个时间或门店;**不要套用 S3 模板**。
- 退出码 `1`:出错,按 `references/troubleshooting.md` 处理。

**S3 讲结果**(按下面的模板,3–6 行,不要展开所有方案)
```
✅ 建议:{recommended.lines 的 name,含数量}  ¥{recommended.quote.price/100}(官方核价)
   {saving>0 时:比分开点(¥{baseline.quote.price/100})少付 ¥{saving/100};keepOriginal 时:保持原来的点法就好}
⚠️ {notices:菜单显示 ¥{menuPrice/100} 的「{name}」要随单加购会员卡;只有 plain.status 为 verified 时写「不加卡 ¥{plain.price/100}」,只有 withCard.status 为 verified 时写「加卡 ¥{withCard.price/100}(含卡费)」;有 extras 时写「多出 {extras}」}
🟡 {pending:可领券「{title}」还没领,领了才能核价;领取会一次领取全部 {claimableCount} 张}
```
最后附一句:价格只代表这家店此刻的官方报价,下单时以 App 为准。用户想看依据时,再给出账单(门店、时间、每行商品、核价编号 `quote.traceId`)。

## 需要时再读
- 价格状态、「同一顿」的判定、券和会员价的规则:`references/rules.md`

Report a problem