McOmni skill
A skill that guides an agent through the 35 McDonald's China MCP tools: coupons, orders, delivery, lottery and points.
- 99 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- A personal token opens the account orders, coupons and points, and the agent can place a real order.
- Confirmation before an order, lottery draw and point exchange is set by the skill instructions.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/mcomniDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- A personal token opens the account orders, coupons and points, and the agent can place a real order.
- Confirmation before an order, lottery draw and point exchange is set by the skill instructions.
This is third-party code. Review the repository files before installing.
What it does
McOmni is an agent skill on top of the McDonald's China MCP server (mcd-mcp). It knows all 35 tools and 7 workflows: collecting coupons, picking a restaurant, pricing, in-restaurant orders, McDelivery and drive-thru pickup, the points lottery, calorie counts and comparing prices with and without a coupon. SKILL.md holds 14 rules against typical mistakes such as a wrong beType or invented codes. A dependency-free CLI sits beside it and calls the same tools from a terminal.
Who it is for. McDonald's users in China with a personal MCP token who want to order through an agent and avoid losing expiring points.
Good fit when
- An agent has to assemble an order: restaurant, menu, price and final confirmation.
- Points expire this month and you want to spend them on the lottery without touching the rest.
- Before buying you want to compare the price with and without a coupon.
- Once a day, collect every available coupon with one command.
Not a fit when
- You have no Chinese McDonald's account and no token from open.mcd.cn.
- The agent would order on its own without your confirmation: the skill asks for it before an order and a lottery draw.
- You need exact prices and availability: the McDonald's service decides, and skill output is for reference.
Example request
Find a McDonald's on Gulou South Street in Beijing and show my order price with and without a coupon. Do not place the order without my confirmation.Limitations
The skill works only with the McDonald's China MCP server and a personal token from open.mcd.cn, and it neither saves nor prints the token. The project is not a McDonald's product and was built for the M-CODE 1024 contest. It targets Tencent WorkBuddy: add the MCP to connectors and confirm trust, otherwise the tools do not appear, and then only the `scripts/mcd_cli.py` CLI remains. The lottery has a request rate limit, and retries do not help. Documentation and the skill description are in Chinese.
How to disable. Remove the mcdonalds folder from the agent skills directory and the mcd-mcp entry from the MCP configuration.
FAQ
How do I get a token for McOmni?
Open open.mcd.cn/mcp, sign in with a phone number, activate in the console and copy the token. Put it in place of MCD_MCP_TOKEN in the configuration.
Can it run without an AI client?
Yes. `scripts/mcd_cli.py` calls the tools from a terminal: `list` shows tools and `call` runs one. The token comes from MCD_MCP_TOKEN.
Does the agent order without my confirmation?
By the skill rules, no. Before an order it prices the basket and shows the total, and the lottery runs in two steps: first the point cost, then your consent.
What does points_expiry_draw.py do?
By default it prints a plan with no spending. The `--yes` flag spends only expiring points, while `--allow-overflow` adds the rest and is for use only after your consent.
Which pickup methods are supported?
Three: pickup in the restaurant, McDelivery and drive-thru. The method is set by the beType parameter, so the skill asks for it first.
Discussion
No questions or reviews yet.
Related
SkillsCLI and skill for McDonald's China orders: pick a meal by calories, price it with coupons and hold the order until confirmed.
A skill for ordering from McDonald's China via its official MCP: coupon-aware prices, nutrition, order status and a quiet summary.
Skill that prices a group McDonald's China order over MCP, compares service tiers and shows the gap to the next discount.
Skill and CLI that name the cheapest way to order food at McDonald's China and show the outcome before an order is created
A McDonald's China MCP skill finds coupons and prices the cheapest order by budget or calories, ordering only on the user's word.
McButler (mcd-self-butler)
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
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| McOmni (this card) | no | 99 | ||
| mcd-cn-assistant | no | API key | 379 | focuses on coupons, current promotions and group orders; McOmni covers all 35 tools and adds a dependency-free CLI |
| mcd-mcp-kit | no | 121 | checks the server connection; McOmni guides an agent through ordering and points |
README in short
Workflows begin with choosing the pickup method: in-restaurant, delivery or drive-thru. Parameters such as storeCode and takeWayCode come only from the previous tool response. Detailed references live in references: tools.md and workflows.md.
README badge
Original SKILL.md
---
name: mcdonalds
description: 麦当劳中国官方 MCP 全能助手。当用户提到麦当劳、麦乐送、开心乐园餐、麦麦省优惠券、领券、点麦当劳、外送到家、得来速、麦当劳积分、积分抽奖、积分商城兑换、麦当劳餐品热量/营养、麦当劳订单查询或取消、麦当劳周边玩具与活动时使用。覆盖官方 35 个工具的全部能力,内置领券、到店点餐、外送、玩具雷达、积分抽奖、热量计算、优惠计算器七大工作流。
agent_created: true
---
# 麦当劳 MCP 全能助手
通过麦当劳中国官方 MCP Server(`mcd-mcp` @ `https://mcp.mcd.cn`)为用户完成从领券、比价、点餐、外送到积分抽奖、营养计算的全流程。共 **35 个工具**,全部能力见 `references/tools.md`。
## 前置条件
1. `~/.workbuddy/mcp.json` 中需存在 `mcpServers.mcd-mcp`(含 `Authorization: Bearer <token>`)。Token 获取:https://open.mcd.cn/mcp
2. 该 MCP 需在「连接器管理」中点击**信任**后,工具才会出现在可用工具列表里。
## 两种调用通道
| 通道 | 适用 | 说明 |
|---|---|---|
| **A. 直接调用 MCP 工具**(首选) | MCP 已被信任 | 直接调用工具名,如 `query-meals`。参数严格按 `references/tools.md` |
| **B. 命令行脚本**(备选/排障) | MCP 未信任、或需在终端验证 | `python scripts/mcd_cli.py call <工具名> '<json>'`;`list` 列工具、`desc` 查参数 |
通道 B 示例:
```bash
python scripts/mcd_cli.py list 优惠
python scripts/mcd_cli.py call auto-bind-coupons
python scripts/mcd_cli.py call query-nearby-stores '{"beType":1,"searchType":1,"city":"北京"}'
```
## 通用铁律(违反会直接报错或下错单)
1. **`beType` 决定一切**:`1`=到店自取、`2`=麦乐送外送、`5`=得来速、`6`=企业团餐。
2. **`orderType`**:到店类(含自取 + 得来速)= `1`;外送类(含麦乐送 + 团餐)= `2`。
3. **`beCode` 与 `storeCode` 配对**:到店自取(`beType=1`)**不传** `beCode`;得来速从 `query-nearby-stores` 取;麦乐送/团餐从 `delivery-query-stores` 取。传错会报错。
4. **`query-nearby-stores.searchType` 必须传对**(实测坑):
- `searchType=1` 查**收藏餐厅**;该 `beType` 无收藏时返回 `600050 收藏餐厅列表为空`。到店自取(beType=1)通常有收藏店,得来速(beType=5)常为空。
- `searchType=2` 按位置搜索,**必须 `city` 与 `keyword` 同时传**;只传其一必报 `600058 城市名或者关键词不能为空`。
- 稳妥路径:先试 `searchType=1`,报 600050 则改用 `searchType=2` + `city` + `keyword`。
5. **菜单编码路径**:`query-meals` 的餐品编码在 **`data.categories[].meals[].code`**,详情在 `data.meals.{code}`(含 `name`/`currentPrice`/`originalPrice`)。
⚠️ **不要误取响应外层的 `code`**——那是业务状态码(`200`),不是餐品编码。
6. **绝不臆造编码**:`storeCode`、`beCode`、`addressId`、`productCode`、`couponId`、`skuId` 都必须来自上游工具返回,不得凭空生成。
7. **`reservationDate` 仅预约场景传**(格式 `yyyy-MM-dd HH:mm`),非预约**不要传**。门店返回 `reservation=true` 时,其 `reservationTimeOptions` 必须**完整展示**,缺项会导致用户无法预约。
8. **下单前必须 `calculate-price`**,把明细与总价展示给用户并取得明确确认,再调 `create-order`。禁止跳过算价直接下单。
9. **到店场景(`orderType=1`)下单必传 `takeWayCode`**,取值只能来自 `calculate-price` 返回的 `data.takeWayList[].code`(实测取值:`eat-in` / `take-in-store`);外送/团餐(`orderType=2`)**不要传**(其算价返回**不含** `takeWayList`)。
10. **抽奖必须两段式**:先 `query-lottery-info` 展示 `drawDecision.nextConsumption`,用户明确确认后才可 `draw-lottery`。禁止试抽、自动抽、连续抽。
11. **业务成败看 `success` 字段**(仅适用于结构化返回):工具调用不报错 ≠ 业务成功。响应 JSON 中 `success=false` 即失败(如 `60006 商品已售罄`、`600058 城市名为空`),须如实转述 `message`,不得改写或掩盖。
12. **返回有两种形态,别搞混**:
- **结构化返回**(多数工具):字段说明 + 原始 JSON,按字段取值。
- **服务端已渲染的 Markdown**(实测 `available-coupons`、`query-my-coupons`、`campaign-calendar`):**直接原样展示给用户**,不要试图解析字段、也没有 `success` 可判。空文本即视为无数据。