Skip to content
calmsprite2001Public

About

麦途 · 读懂你已经点过的麦当劳 | 基于麦当劳官方 MCP 的历史订单场景叙事 Skill | 麦当劳程序员创意开发大赛参赛作品

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

麦途 mcd-mailu

别的工具告诉你「该点什么」。麦途做的是相反的事——读懂你已经点的。

在线预览 → https://calmsprite2001.github.io/mcd-mailu/

不用装任何东西、不用申请 Token,打开就是一张由 88 单样本生成的足迹卡。

基于麦当劳官方 MCP 的消费轨迹与场景叙事 Skill。读取你的历史订单,识别出「这次在机场」「这次是赶早班」「这次在机场连点了两单」,把你的麦当劳历史讲成一个每句话都能回溯到真实订单的故事,输出一张可截图分享的轨迹卡。

麦当劳程序员创意开发大赛参赛作品。


给谁用

用户 场景
麦当劳常客 想知道一年到底吃了多少次、钱花在哪、最常点哪几样
一年只吃几次的人 这类人反而更有故事——次数少,每一次都有原因(机场、赶早、加班)
出差与通勤人群 在陌生城市把麦当劳当锚点的人,门店名就是他们的行程记录
愿意分享的人 卡片是单文件、可截图、带结论,不需要解释就能发出去
开发者 想找一个「MCP 不只用来查数据、还能用来理解生活」的参考实现

不适合谁:想用它点餐、领券、比价的人。麦途只读历史,不干预任何下单动作。

为什么不一样

大赛里绝大多数作品在解决「帮你点」:点餐助手、省钱助手、营养助手、派对策划。这些方向都很好,但已经挤满了。

麦途补的是另一端,也是被所有人忽略的一端:已经发生的消费里有什么。

麦当劳订单里最被低估的两个字段是门店名和下单时间:

  • 店名里藏着「机场」「火车站」「写字楼」「医院」——你当时在哪
  • 时间里藏着早班机、深夜加班、周末遛娃——你为什么在那

把这些线索拼起来,一笔笔冷冰冰的订单就变成了能讲的故事。这是 MCP 数据用法的另一种可能:不是查询接口,是理解生活的原料。

效果长什么样

不开 Token、不连网络,直接打开 docs/index.html 就能看到完整效果。它由 fixtures/demo_orders.json 里 88 单人工构造的样本生成。

同一套代码,两种讲述方式:

样本少时讲轨迹(真实测试账号,4 单,11 个月):

11 个月里你吃了 4 次麦当劳——2 次都在路上。

2025-11-15 17:23,麦当劳成都天府机场GTC餐厅,¥38:板烧鸡腿堡三件套(出行慰藉、新店打卡) 2025-11-15 17:35,同一家店,¥9.5:黑金奶黄年糕风味派(出行慰藉、一单多点) 最拼的一次:2025-11-15,距上一单 12 分钟、同店,连吃两单。

样本够时讲画像(88 单):

6 个月,88 次,你是天涯路人。

88 单,共 ¥1793.8,平均每单 ¥20.4。 26/88 单在机场或火车站——这些地方从不是你的目的地。 点得最多的三样:中薯条×31、中可乐×18、香芋派×11。

核心红线

卡片上的每一句话,都必须能回溯到至少一条真实订单。

这是产品的命根子。所以:

  • 数据里没有的餐品,文案里一个字都不出现(比如知道你没点过可乐,就不会说「配一杯可乐」)
  • 每个数字都带 evidence(订单号集合),校验不过就不写
  • 样本不足 10 单时不装统计,改成按时间讲每一次,宁可朴素也不虚构

快速开始

方式一:不用 Token,直接看效果

git clone https://github.com/calmsprite2001/mcd-mailu.git
cd mcd-mailu
python scripts/run.py --demo
# 直接用浏览器打开 docs/index.html

零依赖,纯标准库,Python 3.10+。

方式二:用你自己的真实订单

  1. 到 https://open.mcd.cn/mcp 用手机号登录,控制台激活并复制 MCP Token
  2. 设环境变量:
export MCD_MCP_TOKEN=你的Token
  1. 在 WorkBuddy / Cherry Studio / Cursor 中配置 MCP 连接器(配置见 mcp-config.example.json)
  2. 直接跑:
python scripts/run.py

或者在 WorkBuddy 里说一句「看看我的麦当劳足迹」,Skill 会自动接管。

工作流

order-list ──┐
mall-order-list ──┼─→ 清洗归一 ─→ 场景识别 ─→ 模式识别 ─→ 叙事生成 ─→ HTML 轨迹卡
now-time-info ──┘   (状态/去重/   (每单打标签  (按到访口径)  (每句带 evidence)
                      金额/时间)   带 evidence)

关键设计:按「到访」而不是「按订单」统计。 在机场候机 12 分钟连点两单,是「1 次到访、2 个订单」,不是「去了两次机场」。不做这层合并,画像会被连点污染——这个坑是实测时发现的。

场景词典是开放的

所有识别规则都在 references/scene_rules.md,透明可查。欢迎 PR 补充新场景。

词典越厚,能认出的故事越多。这是本项目的护城河:不是模型多强,是场景库多细。

隐私

  • 订单明细不落盘,全部内存计算,输出只有聚合结果与场景标签
  • 卡片里不出现完整订单号、手机号、地址(门店名保留,它是故事的一部分)
  • Token 只从环境变量读,不打印、不进文件、不进日志
  • fixtures/ 全部是人工构造的假数据

已知限制

  • order-list 没有分页参数,一次返回全量。重度用户的历史是否会被服务端截断,未能验证。
  • 订单明细没有单品单价,只有订单总额,所以无法计算单品花费,只能统计出现频次。
  • 城市识别未实现。跨城判断目前靠店名关键词(机场/车站)间接推断。

目录

SKILL.md                  Skill 定义与工作流判据
scripts/
  mcp_client.py           麦当劳 MCP 客户端(仅标准库)
  probe.py                字段探测器(实测校准用)
  money.py                金额/时间归一化
  adapters.py             MCP 返回 → OrderRecord
  scene_engine.py         场景标签与模式识别
  narrative.py            叙事生成(带 evidence)
  card_render.py          HTML 轨迹卡
  run.py                  主流程(支持 --demo)
  gen_fixture.py          演示数据生成器
fixtures/demo_orders.json 88 单人工构造样本
references/scene_rules.md 场景识别词典(欢迎补充)
docs/index.html           离线演示页

声明

本项目为麦当劳程序员节创意开发大赛参赛作品,由参赛者独立开发,非麦当劳官方产品。输出仅供参考,不构成消费建议;餐品信息、价格及供应状态以麦当劳官方渠道实时结果为准。

详见 CONTEST_DECLARATION.md 与 MCP_INTEGRATION.md。

About

麦途 · 读懂你已经点过的麦当劳 | 基于麦当劳官方 MCP 的历史订单场景叙事 Skill | 麦当劳程序员创意开发大赛参赛作品

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages