McButler (mcd-self-butler) skill

mcd-self-butler

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

  • 215 ★ on the repository
  • Last commit
Skill

Extended access

Why this level

  • Through MCP the agent reads the chain account: coupons, points and order history, and can create an order on explicit request
  • The MCP token travels in a header and must be kept out of the repository and chats
All reasons and checks

jouaaaaaa/mcd-self-butler

Install

Works in

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/mcd-self-butler

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.

  • Through MCP the agent reads the chain account: coupons, points and order history, and can create an order on explicit request
  • The MCP token travels in a header and must be kept out of the repository and chats

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

What it does

McButler is an agent skill that works on top of the official McDonald's China MCP (`https://mcp.mcd.cn`, Streamable HTTP) and adds Python calculations to it. The agent pulls the menu, prices and nutrition through MCP, and bundled scripts build the recommendations, scores and tables. The skill targets orders at restaurants in China. The skill has six entry points. Daily recommendation ranks dishes in saving, healthy and popular modes. Meal check splits a combo into items and sums calories, protein, fat, sodium and calcium, labelling data as measured, official or estimated. Store comparison computes full cost: price plus travel time plus queue time. For a group order it sorts people into groups by restrictions, and a "McRisk score" gives a credit-style rating of orders. The sixth entry point draws an HTML skit where characters argue about the choice. The skill never places an order itself: until the user says to order, the agent stops at price confirmation. When data is missing the skill reports uncertainty instead of inventing a number.

Who it is for. McDonald's customers in China who connected the chain's MCP to an agent and want to evaluate an order by calories and full cost rather than the menu price alone.

Good fit when

  • The lunch break is short and you must choose a restaurant by travel and queue, not only by price
  • Someone is losing weight and wants a combo broken down by calories and sodium with a swap suggestion
  • A department orders lunch for 30 people and some avoid beef or spicy food
  • You want to see how fully coupons and points on the account are used
  • A price question needs a number: the MCP calculation tool gives it, not an eyeball estimate

Not a fit when

  • You are outside China: the chain's MCP and menus belong to its Chinese service
  • You have no McDonald's MCP token: live menus and prices are unavailable and only the repository demo data remains
  • You need medical advice for illness, pregnancy or allergies: the skill itself points to a doctor and the dish ingredients
  • You prefer ordering in the app without an agent: the skill is built for choosing, and placing orders happens on an explicit request

Example request

I am in central Shanghai: find nearby restaurants and tell me where a Big Mac combo is cheapest once travel and queue time are counted

Limitations

  • The skill and its docs are in Chinese. The MCP token comes from the McDonald's console, and without it only the demo data in `demo/` and the self-test `scripts/selftest.py` work.
  • The API returns nutrition per item rather than per combo. The skill splits a combo and sums it itself, so figures for items without data are marked as estimates or left out.
  • Queue time is absent from MCP, so the user supplies it or the skill takes a rough peak-hour value and labels it.
  • The project was built for a McDonald's developer contest and is not official chain support.

How to disable. Delete the `mcd-self-butler` skill folder from the agent skills directory and disable the `mcd-mcp` connector in its settings. Revoke the MCP token in the McDonald's console. The skill runs no local services.

FAQ

What does McButler need to work with live data?

A McDonald's MCP token issued in the chain's console, and an agent that supports skills and MCP over HTTP. Without a token you can run the demo on saved responses.

Can I run McButler without a token?

Yes. The `python scripts/mcd_butler.py` commands read files from `demo/`; you only need Python 3.8 or newer with no third-party packages, and `python scripts/selftest.py` runs nine checks.

How does the skill count combo calories?

It gets the combo contents through MCP, matches each item against the nutrition table and sums them. If an item is missing from the table the figure is labelled approximate or left out.

Does the skill place the order by itself?

No. The agent goes as far as the price calculation and waits for an explicit command such as "order it", and only then calls order creation.

What is the McRisk score?

A credit-style scorecard with six dimensions for the account and for single orders, covering things like coupon use and variety of items. It is playful and hints where savings were missed.

Discussion

No questions or reviews yet.

Skills

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

SkillBroad access1.5KRepository stars

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

SkillExtended access1.6KRepository stars

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

SkillExtended access148Repository stars

A skill for ordering from McDonald's China via its official MCP: coupon-aware prices, nutrition, order status and a quiet summary.

SkillBroad access117Repository stars

CLI and skill for McDonald's China orders: pick a meal by calories, price it with coupons and hold the order until confirmed.

CLIBroad access129Repository stars

README in short

The README reads as an entry for the McDonald's developer contest: a table of everyday situations and six modes first, then recommendation formulas, the full-cost rule and a combo breakdown with an honest data-quality label. Three launch options follow, including a local one without a token, and real outputs captured on 24 October 2026.

README badge

Original SKILL.md

---
name: mcd-self-butler
description: 麦当劳自助管家(McButler)。基于麦当劳官方 MCP,做每日低价/健康/人气套餐推荐、套餐健康体检(热量·蛋白·脂肪·钠·钙)、最近门店与最低价门店的全成本比价、企业团餐批量配餐、以及「麦险分」信用评级,并在等待取餐时播放麦门小人吵架小剧场。当用户提到 麦当劳、麦门、金拱门、套餐、优惠券、热量、卡路里、减脂、团餐、下午茶、订餐、比价、麦险分 等词时使用。
---

# 麦当劳自助管家

你是「麦门管家」——一个既懂钱、又懂营养、还懂点行为经济学的麦当劳点单参谋。

你的价值不在于「帮用户点一个套餐」,而在于**把用户没说出口的三个约束同时解开**:
钱包(预算/券)、身体(热量/钠/蛋白)、时间(哪家店多久能拿到)。

---

## 铁律(每一轮对话都要守)

1. **先定场景再动手。** 到店自取 `beType=1` / 得来速 `beType=5` / 麦乐送 `beType=2` / 企业团餐 `beType=6`。
   场景不同,`orderType` 和 `beCode` 的传法完全不同,传错直接报错。
2. **价格只信 `calculate-price`。** 菜单页价格是标价,券、随单购、打包费、运费只有算价接口知道。
   绝不用口算代替,绝不把「菜单价」说成「到手价」。
3. **热量只信 `list-nutrition-foods`。** 营养表只有单品,没有套餐。
   所以分析套餐必须先 `query-meal-detail` 拆成子项,再逐项对表求和。
   **拿不到数据就说不确定,不许估一个数当结论。** 本地脚本会用「实测 / 官方 / 估算」三档标注数据来源,你必须原样转述。
4. **不自动下单。** 除非用户明确说「下单 / 就这个 / 帮我买」,否则只到「确认价格」这一步。
5. **不编造。** 门店编码、商品编码、券名、价格,一律来自工具返回;`storeCode` 必须全是数字。
6. **营养结论不是医疗建议。** 涉及疾病、孕期、儿童、过敏时,明确说明「仅供参考,请遵医嘱 / 以门店配料表为准」。

---

## 六件事,六个入口

### 1️⃣ 探店 / 比价 → `stores`

```
用户:我在南京西路,附近哪家麦当劳最划算?
```

1. `query-nearby-stores`(`searchType=2` + `city` + `keyword`,`beType=1` 到店自取或 `5` 得来速)
2. 选 3-5 家候选,逐个 `query-meals` 拿目标套餐价格(或直接 `calculate-price`,更省 token)
3. 把门店 + 距离 + 价格写进 `stores.json`,跑:

```bash
python scripts/mcd_butler.py stores --stores stores.json --mode balanced
```

Report a problem

Foxx AIMcButler (mcd-self-butler)
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.