Install
openclaw skills install mcdonald-orderMcDonald's China assistant (麦当劳助手) for coupon management, delivery ordering, and nutrition planning. Use this skill when users explicitly mention McDonald's (麦当劳) and want to check/claim coupons (优惠券、领券), order delivery (麦乐送、外卖、点餐), query menu items and prices (菜单、价格), check nutrition info or plan meals within calorie limits (热量、卡路里、营养、搭配套餐), view promotions (活动、优惠、新品), or track order status (订单、配送). Also trigger for McDonald's nutrition queries in comparison contexts with other fast food brands.
openclaw skills install mcdonald-orderRequired Tools: execute_bash
Required Environment Variables:
MCD_TOKEN (required) - API authentication token from https://mcp.mcd.cnMCD_MCP_URL (optional) - MCP service endpoint URL (default: https://mcp.mcd.cn)Security Notes:
Help users interact with McDonald's China services through MCP API calls. This skill handles the complete customer journey from browsing coupons to placing delivery orders.
Required: MCD_TOKEN environment variable must be set. Users obtain this from https://mcp.mcd.cn
If the token is missing or API returns authentication errors:
MCD_TOKENexport MCD_TOKEN="your_token_here"All tools are invoked via curl to the MCP endpoint:
curl -s -X POST "${MCD_MCP_URL:-https://mcp.mcd.cn}" \
-H "Authorization: Bearer ${MCD_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"TOOL_NAME","arguments":{...}},"id":1}'
Parse responses from result.content[0].text or result.structuredContent.
Error handling: If you receive authentication errors, guide the user to check their token. For rate limiting, suggest waiting before retrying.
Trigger phrases: "有什么优惠券", "帮我领券", "麦当劳优惠"
Flow:
available-coupons to show what's claimableauto-bind-couponsquery-my-coupons to confirmOutput format: Present as a numbered list with:
Trigger phrases: "我要点外卖", "麦乐送", "点麦当劳"
Flow (must follow this sequence):
Get delivery address - Call delivery-query-addresses
addressId, storeCode, beCode (required for all subsequent calls)delivery-create-addressBrowse menu - Call query-meals with storeCode and beCode
productCodeCheck store coupons (optional) - Call query-store-coupons
Calculate price - Call calculate-price with selected items
Create order - Call create-order only after user confirms price
query-orderWhy this sequence matters: Each step depends on data from the previous step. The storeCode and beCode from step 1 are required for steps 2-5. Skipping address lookup will cause all subsequent calls to fail.
Trigger phrases: "热量", "卡路里", "营养成分", "帮我搭配XX卡套餐"
Flow:
list-nutrition-foods to get nutrition databaseOutput format (required): Always show nutrition data in a table format:
| 食品 | 热量(kcal) | 蛋白质(g) | 脂肪(g) | 碳水(g) |
|---|---|---|---|---|
| 巨无霸 | 563 | 26 | 33 | 45 |
| 中薯条 | 340 | 4 | 16 | 44 |
| 可乐(中) | 150 | 0 | 0 | 39 |
| 总计 | 1053 | 30 | 49 | 128 |
Why this matters: Users asking about nutrition need complete macronutrient data, not just calories. The list-nutrition-foods tool provides protein, fat, and carbs - always display all of these when doing meal planning. This helps users make informed dietary decisions.
Trigger phrases: "查订单", "配送到哪了", "订单状态"
Flow:
query-order with the order IDPurpose: List all currently claimable coupons
Parameters: None
When: User asks what coupons are available
Purpose: Claim all available coupons to user's account
Parameters: None
When: User says "帮我领券", "一键领取"
Purpose: Show coupons user has already claimed
Parameters: page (default "1"), pageSize (default "50")
When: User asks "我有哪些券"
Purpose: Show recent and upcoming promotional campaigns
Parameters: specifiedDate (optional, format: yyyy-MM-dd)
When: User asks about promotions or activities
Purpose: Get nutrition data for common menu items
Parameters: None
Returns: Nutrition database with calories, protein, fat, carbs, sodium, calcium for each item
When: User asks about calories, nutrition, or wants meal planning help
Output requirement: Always present data in table format showing all available nutrition fields, not just calories
Purpose: Get user's saved delivery addresses and matching store info
Parameters: None
Returns: addressId, storeCode, beCode (save these for subsequent calls)
When: Starting any delivery order flow
Critical: This must be the first call in the delivery workflow
Purpose: Add a new delivery address
Parameters (all required):
city: City name (e.g., "南京市")contactName: Contact person namegender: "先生" or "女士"phone: 11-digit mobile number starting with 1address: Street addressaddressDetail: Unit/room numberPurpose: Show coupons valid at a specific store and their applicable products
Parameters: storeCode, beCode (from delivery-query-addresses)
When: User wants to see what coupons they can use for current order
Prerequisite: Must call delivery-query-addresses first
Purpose: Get menu items available at a store
Parameters: storeCode, beCode (from delivery-query-addresses)
Returns: Product list with productCode needed for ordering
When: User wants to browse menu
Prerequisite: Must call delivery-query-addresses first
Purpose: Get detailed info about a specific menu item
Parameters: storeCode, beCode, code (product code from query-meals)
When: User asks for details about a specific item
Purpose: Calculate order total including discounts, delivery, and packing fees
Parameters:
storeCode, beCode (from delivery-query-addresses)items: Array of {productCode, quantity, couponId?, couponCode?}create-orderPurpose: Place a delivery order
Parameters:
addressId (from delivery-query-addresses)storeCode, beCode (from delivery-query-addresses)items: Array of {productCode, quantity, couponId?, couponCode?}calculate-pricedelivery-query-addresses firstcalculate-price and get user confirmationPurpose: Check order status and delivery progress
Parameters: orderId (34-digit order tracking number)
When: User wants to track their order
Purpose: Get current server time for checking campaign validity
Parameters: None
When: Needed to determine if promotions are active (usually automatic)
delivery-query-addressescalculate-price and wait for user OK before create-orderdelivery-create-address, never use fake phone numbers or addresses - ask the user for real informationstoreCode and beCode must come from the same store record in delivery-query-addresses responseExample 1: Quick coupon claim
User: 今天有什么优惠券?
Assistant: [calls available-coupons]
Assistant: 当前可领取3张优惠券:
1. 麦辣鸡腿堡套餐立减5元(有效期至3月10日)
2. 任意饮品第二杯半价(有效期至3月15日)
3. 满30减5元(有效期至3月20日)
需要帮你一键领取吗?
User: 好的
Assistant: [calls auto-bind-coupons]
Assistant: ✅ 已成功领取3张优惠券到您的账户!
Example 2: Delivery order with coupon
User: 我想点麦乐送
Assistant: [calls delivery-query-addresses]
Assistant: 您有以下配送地址:
1. 📍 清竹园9号楼 2单元508(李明 先生)
请选择配送地址,或告诉我新地址信息。
User: 就第一个
Assistant: [calls query-store-coupons, query-meals in parallel]
Assistant: 好的!这个门店您有2张可用优惠券:
- 麦辣鸡腿堡套餐立减5元
- 满30减5元
菜单包括:[shows menu categories]
您想点什么?
User: 一个巨无霸套餐,用满减券
Assistant: [calls calculate-price with coupon]
Assistant: 价格明细:
- 商品原价:35.00元
- 优惠:-5.00元
- 运费:6.00元
- 打包费:2.00元
- 应付总额:38.00元
确认下单吗?
User: 确认
Assistant: [calls create-order]
Assistant: ✅ 订单创建成功!订单号:1030938730000733964700499858
请通过支付链接完成支付:[link]
支付完成后可以随时问我"查订单"来查看配送进度。