mcd-budget-meal skill

A skill on the McDonald's China MCP: turns a budget and wishes into up to three menus with official prices, leftover budget and coupon terms

  • 1,618 ★ on the repository
  • Last commit
Skill

Extended access

Why this level

  • The skill works with a personal McDonald's China MCP token, kept in your configuration and sent to the service's official address
  • To pick a store the agent uses your location if you provide it
  • The direct Python path sends requests to the service on your behalf
All reasons and checks

sam-hui-dot/mcd-budget-meal

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/mcd-budget-meal

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 skill works with a personal McDonald's China MCP token, kept in your configuration and sent to the service's official address
  • To pick a store the agent uses your location if you provide it
  • The direct Python path sends requests to the service on your behalf

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

What it does

mcd-budget-meal helps choose a meal for one person picking up at a restaurant. You state a budget and wishes, such as "30 yuan, one burger and a drink". Through the McDonald's China MCP the skill queries the menu and coupons of the chosen store and prepares up to three candidates. Each goes through the official `calculate-price` calculation. The answer shows the total due, the actual items and quantities, the leftover budget and the coupon terms. Local Python scripts (standard library, no dependencies) count money in whole fen and check the budget, quantities, excluded items, quote time and duplicates. If the budget cannot be met, the skill shows the nearest valid option and the overspend. After any swap, such as a drink, the whole order is repriced instead of derived from the menu price gap. From a run, `report_meals.py` builds an interactive report `meal-report.html`: you can change the budget, compare compositions and copy the result. The skill does not place an order; it stops at the recommendation.

Who it is for. For people ordering at McDonald's China who want to fit a budget without paging through menus and promo pages, using a client with remote MCP.

Good fit when

  • You must fit 25 or 30 yuan and want several menus with exact prices from the official calculation
  • You want to swap a drink or drop an item and see the new price of the whole order
  • You want to compare menus with and without coupons when coupons are available at the chosen store
  • You want to open a report page and move the budget without calling the MCP
  • You want a sample skill that checks prices through MCP and does not place an order

Not a fit when

  • You need delivery, several restaurants or a split bill for several people: the version covers one person and pickup
  • You need the order placed in an app: the skill does not order
  • Calories, ingredients and allergens matter: the recommendations ignore them

Example request

Use the mcd-budget-meal skill: one person, pickup now, budget 30 yuan, I want a burger and a drink; let me pick the store first and do not place an order

Limitations

  • You need your own McDonald's China MCP token from the open.mcd.cn platform and a client with remote MCP over Streamable HTTP, such as WorkBuddy, Cherry Studio or Cursor. Availability of the service from Russia has not been checked.
  • The scripts need Python 3.10 or newer. WorkBuddy has a known array-validation issue, so a direct path through local Python is provided.
  • Only the three candidates of the current run are compared, so the result does not guarantee the lowest price on the whole menu. Coupons have not been tested on a real account, so the coupon branch has no real example yet.
  • Installation was checked in a temporary configuration; a real WorkBuddy directory and skill auto-discovery were not tested. A quote counts as fresh for 15 minutes, a project setting.
  • The project is a contestant's work and not a McDonald's product.

How to disable. Delete the `skills/mcd-budget-meal` folder from the client's skills directory and disconnect the McDonald's MCP connector in its settings. The token lives only in your private configuration or the `MCD_MCP_TOKEN` variable, so revoke it on the platform. Local reports are in the repository's `private/` folder.

FAQ

How do I install mcd-budget-meal?

Copy the `skills/mcd-budget-meal` folder into the client's skills directory. For WorkBuddy, `./install.ps1` in the repository folder works: it backs up an existing skill and does not touch the token or the connector. If there is no import, ask the agent to read `skills/mcd-budget-meal/SKILL.md`.

Do I need a token or a paid subscription?

You only need your own McDonald's China MCP token, issued on the open.mcd.cn platform and kept in the client's private configuration. The project offers no token proxy. The skill itself is free under the MIT license.

Does the skill place orders?

No. It stops at the menu recommendation. You place the order yourself in the app or at the restaurant.

Why is the price recalculated after a drink swap?

The skill does not add up menu price differences; it sends the whole changed order for official pricing. That respects bundle and coupon conditions.

Can I try it without a token?

Yes. The page sam-hui-dot.github.io/mcd-budget-meal opens a demo on anonymized historical prices; it fetches no prices and places no order. An example interactive report is there too.

Discussion

No questions or reviews yet.

Skills

Picks a complete McDonald's China order for your budget and taste at official prices and returns a ready order card

SkillExtended access148Repository stars

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

SkillExtended access213Repository stars

Skill compares McDonald's China meals and coupons to calculate the cost and eligible discounts at a selected restaurant

SkillBroad access992Repository stars

A skill calculates daily calorie targets and builds three ready McDonald's China meal sets from the menu, with sodium warnings.

SkillBroad access104Repository stars

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

SkillBroad access1.5KRepository stars

README in short

The README is in Chinese: it shows the demo and sample menus for a 30-yuan budget, explains installation, the workflow and limits, answers questions about the token and privacy and gives a table of per-version checks. It ends with a table of project files and license and contest declaration details.

README badge

Original SKILL.md

---
name: mcd-budget-meal
description: 使用麦当劳中国 MCP,为单人到店取餐查询菜单、核对当前门店优惠并比较预算内餐单。适用于“30元吃什么”“保留汉堡换饮料”等点餐决策请求。
---

# 麦麦预算餐

让用户用一句话获得少量可选择的餐单,每份给出实际餐品、官方核价、预算余量和优惠条件。使用用户本机已启用的麦当劳 MCP 连接器,服务地址 `https://mcp.mcd.cn`。

## 收集需求

从对话提取预算、门店或位置、必选餐品、不要的餐品和取餐时间。缺预算或门店时一起询问;已给出的信息不要重复问。默认单人、现在、到店取餐。外送、多门店比较和多人分账不属于这一版,说明范围后让用户选择是否继续到店取餐。

将偏好转成可检查约束:指定餐品用 `required_codes`,最低份数用 `required_quantities`;“一个汉堡和一杯饮料”用由当前菜单确认的 `required_groups`,允许各组内替代。不要的餐品用 `excluded_codes`,名称匹配用 `excluded_terms`。不把父套餐计入实际汉堡或饮料份数,不把“不要普通可乐”自动扩展成“不要所有可乐”;含糊且影响结果时再确认。

若需定位,使用用户主动提供的位置调用 `query-nearby-stores`,让用户选定门店。没有位置时直接询问门店,不推测用户地址。不要把个人定位保存到公开文件。

## 获取实际餐单和价格

1. 查看当前连接器的工具说明和输入 schema,以当前 schema 组织参数。本项目的 JSON 是本地整理格式,不能直接作为 MCP 请求参数。
2. 用 `query-meals` 查所选门店菜单;用 `query-store-coupons` 查此门店下用户可用的券。没有券就比较不带券的餐单;券查询失败则注明优惠尚未核实,不推测其可用性。
3. 对准备使用的套餐调用 `query-meal-detail`,补齐必选组合、允许替换项和数量。区分主商品价格、加购价、会员条件价及替换差价,不把菜单展示价当作应付价。
4. 从实际菜单构造最多三份候选:预算内的基础餐单、保留用户偏好的餐单、另一份套餐组合。只保留有意义的差异,不为了凑数增加餐品。不擅自删掉必选项、改变预算或加入付费会员。
5. 对每份候选调用 `calculate-price`。请求中的门店、取餐方式、时间、餐品选项和券保持一致。仅成功核价的餐单进入比较;记录应付总额、币种、金额单位、时间和工具返回引用。

宿主允许执行脚本时,优先读取 [references/meal-plan.md](references/meal-plan.md),将最多三份完整核价参数与对应组成写到私有餐单计划,用 `scripts/quote_meals.py`完成核价与自动比较。用户不需要编辑 JSON或抄录金额。该入口在实际请求前检查编码和份数、在工具定义中确认单位;用已有本机 WorkBuddy认证时显式添加 `--use-workbuddy-config`。候选生成、餐品归类、券条件仍必须来自实际工具结果,不能用示例编码。没有已获授权的脚本执行条件时保留原生工具流程。

每次用户请求只做这几份必要核价,不遍历全菜单、不后台刷新、不自动重试限流。遇到错误保留原因;餐品不可售可替换一次并重新核价。401 提示用户检查本机连接器;429 停止本轮调用。

遇到 `Parameter validation failed` 等参数类型错误,立即停止本轮核价,不继续轮换餐单或用空数组、缺参数请求试探。保存可见的工具输入 schema、该次实际 arguments 和原始错误;无法读取的部分写明不可用,不把推测或重写后的示例当原始记录。`items` 的数组 `[{...}]` 与字符串 `"[{...}]"` 是不同类型,应按实际 schema 传值。仅凭错误文字或省略参数后的另一种错误,不能确定问题发生在客户端,也不能断言连接器存在 bug。先核对参数与 schema;有明确修正依据后,在本次任务已授权范围内修正并再核价一次;同类错误再发生就停止并保留诊断资料。

WorkBuddy 经延迟工具入口报告 `/items: must be array` 时,不再经同一入口重试,也不要求反复重启或改连接器。读取 [references/workbuddy-compatibility.md](references/workbuddy-compatibility.md),使用项目内的官方 MCP直连客户端;`mcp_query.py`单工具路径已完成三份真实核价及一次换饮料核价。新版 `quote_meals.py`复用它的通信客户端,自动核价并比较完整计划。用户已授权使用其本机连接器查询核价时,可用 `--use-workbuddy-config`读取现有私有认证;不打印 Token、不修改配置。第一次失败后停止,不轮换参数探测。没有 Python或无法执行本地脚本时,明确说明该宿主暂不能完成核价,不用菜单价替代。

## 比较与输出

读取 [references/quote-format.md](references/quote-format.md) 了解本地数据格式。将成功核价结果归一化为整数分,使用 `scripts/compare_meals.py` 确定预算内排序、余量和超预算差额。宿主允许执行本地脚本时运行;否则直接按同样规则输出餐单表。

优先展示满足必选餐品且预算内的方案,再按应付价从低到高排列。相同餐品及选项只展示应付价较低的一份,说明所用优惠。结果是“本轮候选中更省钱”,不宣称全门店最优。

输出门店、到店取餐、核价时间,以及每份的餐品和数量、应付金额、预算余量、券或会员条件。没有预算内方案时列出最接近的方案和超额,不自动放宽需求。未核价或失败的候选单独注明。

批量入口使用新的 `--records-dir` 后,会自动生成 `comparison.json` 和 `meal-report.html`。告诉用户报告的完整本机路径,便于直接打开;报告只包含本轮有效餐单,打开页面不会发出请求。差价说明分别列出增加、减少和保持不变的实际餐品,不把整单差价说成单品价格。公开分享前由用户确认所选门店和餐品是否适合披露,不上传原始记录。

HTML或比较JSON导出失败属于本地文件问题,不将已经成功的报价当作失败,不因此重新调用核价。保留终端有效结果,按导出提示处理。已有 `comparison.json`时可用 `scripts/report_meals.py <比较JSON> --from-comparison --output <private内的新HTML路径>`离线恢复;这会保留原核价时间并标注历史结果,不能替代当前购买前的重新核价。

连接器名称可以不同于 `mcd-mcp`:直连客户端按官方地址匹配;多个匹配项时用 `--server-key`明确选择。认证失败、限流和网络错误按具体提示处理,不自动重试。本批量入口已完成三份真实核价、报告生成及换饮料重新核价;当次无可用券,不能视作带券案例验证。

用户说“不要可乐”“加个薯条”时,重新查必要的可替换选项,并对改动后的完整餐单重新核价。禁止用旧总价加减菜单价格代替重新核价。

本 Skill 只查询和核价,不调用创建订单、支付、领券、积分兑换或新增地址工具。用户决定后,给出便于在麦当劳官方渠道核对的餐单;结算价格以官方当前结果为准。

过敏相关请求不能靠标签推断安全,提示用户向门店核实。不要推断未返回的营养、配料和过敏原信息。

Report a problem

Foxx AImcd-budget-meal
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.