内容
# 麦茶团长 🍵
> 团队下午茶,一个人开团,所有人自己点。
> **实时满减进度看板**——还差 ¥8 解锁减 ¥20,全组看得见。
基于 **麦当劳中国 MCP** 的团队拼单 Skill:发起人在 WorkBuddy 里说一句话开团,同事用手机浏览器点单(免登录、免安装、免 Token),看板实时跳总价、盯满减、算人均;截止后团长一键试算最优券方案,确认下单。
```
团长(WorkBuddy + 麦当劳 MCP) 同事(手机浏览器)
│ 「发起下午茶,20人,5点截止」
│ 定门店 → 拉菜单 → 拉满减券
▼
[开团链接] ─────发到微信群─────► 📋 自己勾自己想吃的
│ │ 提交
▼ ▼
📊 共享看板:总价实时跳 · 满减进度条 · 人均(券后)
│「还差 ¥8 解锁 -¥20」→ 凑单方案(吃刚好不浪费)
▼ 截止
🧮 calculate-price 真实试算 → 团长确认 → 下单 → 等外卖
```
---
## 为什么是它
办公室拼麦当劳的真实流程:群里喊一圈 → 团长逐条记录「跟老王一样」「可乐换无糖」→ 手动加购物车 → 心算满减 → 下单后拿计算器按人头摊钱。**最累的不是点餐,是「当人肉收单器 + 人肉计算器」。**
已有拼单类作品把「算账」自动化了(券优化、分账)。**麦茶团长把「收单」也自动化了**:
| 痛点 | 麦茶团长的答案 |
|---|---|
| 团长逐条翻译口语需求 | 同事自己打开链接勾菜单,忌口写备注 |
| 收单期间无人知道凑没凑够 | **满减进度条实时可见**,还差多少一目了然 |
| 「要不要再拉一个人凑单」 | 看板直接给出补差方案(分享装,吃刚好不浪费) |
| 最后才想起来比价 | 截止后 `calculate-price` 试算最优券,数字全部来自官方接口 |
## 三个时刻
**① 同事点单** — 手机打开链接,选分类、勾餐品、写备注、交卷,30 秒完事。
**② 看板围观** — 每次有人提交,总价实时刷新;满减进度条从条纹红变成满格青,「已省 ¥20」落地的一刻全组都能看见。人均券后价自动算好,AA 不用吵。
**③ 团长结算** — 截止后 Skill 汇总全部订单,经 MCP `calculate-price` 逐档试算(唯一价格预言机,不做任何本地优惠猜测),输出方案对比,团长确认后 `create-order`,取餐码/支付链接直接给到。
## 快速开始
### 团长侧(只需一人)
**前置**:申请[麦当劳 MCP Token](https://open.mcd.cn/mcp)(手机号登录 → 控制台 → 激活)+ 安装 [WorkBuddy](https://www.workbuddy.cn)。
1. **配置 MCP 连接器**:WorkBuddy 左侧【专家·技能·连接器】→【连接器】→【自定义连接器】→【配置 MCP】,粘贴 [`mcp-config.example.json`](./mcp-config.example.json) 内容,把 `${MCD_MCP_TOKEN}` 换成你的真实 Token,保存并启用。
2. **安装 Skill**:把本仓库放入 WorkBuddy 技能目录(`~/.workbuddy/skills/mcd-tea-captain`),重启会话。Skill 会把参与者链接指向上述在线页面。
3. **开团**:对话里说——
> 发起下午茶拼单,我们 15 人左右,送到 XX 大厦,今天 17:00 截止
Skill 会定位门店、拉菜单和满减券、创建拼单,并把参与者链接给你。
### 同事侧(零门槛)
点开链接 → 输名字 → 勾餐品 → 交卷。看板自动跳转,实时围观凑单进度。
> 🎮 **在线演示**:[点此体验演示拼单](https://mcd-tea-captain.app.workbuddy.host/app/index.html?s=tea-demo-1024)(演示数据,手机直开,无需任何配置)
## 它长什么样
<!-- TODO: 截图/演示 GIF:点单页 → 看板进度条 → 结算单 -->
孟菲斯设计(Memphis Design):麦当劳红黄主色、粗黑描边、硬阴影、波点斜纹——像一张贴在办公室墙上的拼单海报。
## 技术架构
```
┌─────────────────┐ MCP (Streamable HTTP) ┌──────────────────┐
│ WorkBuddy 会话 │◄────── Bearer Token ─────►│ 麦当劳 MCP 服务 │
│ (团长侧 Skill) │ 门店/菜单/券/计价/下单 │ mcp.mcd.cn │
└───────┬─────────┘ └──────────────────┘
│ SQL 写入 sessions / orders
▼
┌─────────────────┐ SDK (PostgREST) ┌──────────────────┐
│ WorkBuddy 云数据库 │◄─────────────────────────►│ 参与者浏览器 H5 │
│ (拼单数据面) │ 4s 轮询 · 免登录读写 │ 点单页 / 看板页 │
└─────────────────┘ └──────────────────┘
```
- **参与者零鉴权设计**:拼单数据按 session 隔离,公开读写仅限拼单表(不含任何个人信息);MCP Token 只在团长本地,前端代码零密钥。
- **价格永远来自官方**:菜单价、满减档位开团时经 MCP 拉取快照;结算价由 `calculate-price` 实时试算,杜绝本地计算错误。
- **合规设计**:凑单推荐只推分享装、统一「吃刚好不浪费」话术,不做「多买多划算」式诱导。
### 使用了哪些麦当劳 MCP 能力
| Tool | 用途 |
|---|---|
| `query-nearby-stores` / `delivery-query-stores` | 定位可配送门店 |
| `query-meals` | 拉取门店菜单,精选下午茶品项 |
| `query-store-coupons` | 获取满减/优惠券档位 |
| `calculate-price` | 截止后逐档试算(唯一价格来源) |
| `create-order` | 团长确认后真实下单(双确认机制) |
| `query-order` | 配送进度回传 |
详见 [MCP_INTEGRATION.md](./MCP_INTEGRATION.md)。
## 目录结构
```
mcd-tea-captain/
├── app/ # 参与者前端(单文件,无构建)
│ ├── index.html # 点单页 + 看板页(孟菲斯风)
│ └── config.js # 云端 publicConfig(仅公开标识,无密钥)
├── SKILL.md # Skill 主文件:团长工作流编排
├── MCP_INTEGRATION.md # MCP 集成说明
├── mcp-config.example.json # 脱敏 MCP 配置示例
├── CONTEST_DECLARATION.md # 参赛声明(官方原文)
├── workbuddy.md # WorkBuddy 开发上下文
└── README.md
```
## 目标用户
- 办公室下午茶/加班餐的**发起人**:再也不用当人肉收单器
- **每个参与者**:30 秒点完单,实时看凑单进度
- 拼单发起最频繁的**行政/HR/团队助理**
## 安全与边界
- MCP Token 仅存于团长本地环境变量,仓库与前端零密钥(`mcp-config.example.json` 只含 `${MCD_MCP_TOKEN}` 占位符)
- 真实下单前展示完整方案并等待团长明确确认,演示模式跳过下单
- 遵守 [麦当劳 MCP 服务规则](https://cdn.mcd.cn/cms/pages/MCPServerRules.html):600 次/分钟限流内使用,试算次数封顶
## 免责声明
本项目为「麦当劳程序员创意开发大赛」参赛作品,由参赛者独立开发,**非麦当劳官方产品**。项目输出仅供参考;餐品信息、价格及供应状态以麦当劳官方渠道的实时结果为准。