正在自动登录…
xanthichi/ mcd-meal-mate
M餐搭子是一个基于麦当劳MCP实时数据的智能搭餐Skill,输入城市、地标、预算、热量上限和蛋白质目标,从当前门店的真实菜单中选出三套可执行的组合,并展示价格、热量、蛋白质和MCP调用链。适用于工作日午餐时间有限的上班族、有预算和营养目标的学生和健身人群,以及想控制热量但仍希望保留选择感的人。
AI 中文解读 · 根据仓库描述与 README 生成 · 2026/10/25 04:26:04 · 查看原文
- 累计 Stars
- 61
- 当前热度
- 1 天内 · 小火
- 仓库创建时间
选用指南
AI 根据 README 整理 · 2026/10/25 04:26:04
- 适用场景
适用于需要快速决定工作日午餐、有预算和营养目标(如热量上限、蛋白质目标)的用户,以及想先看优惠和活动再下单的麦当劳用户。
查看 README 依据
- **安全降级**:未配置 Token 或 Tool 暂时不可用时,使用明确标记的脱敏演示快照。 ## 目标用户 - 工作日午餐时间有限、希望快速做决定的上班族; - 有预算上限、想提高每一元蛋白质回报的学生和健身人群; - 需要控制热量、但仍希望保留选择感的人; - 想先看优惠与活动,再去下单的麦当劳用户; - 想把麦当劳 MCP 接入实际产品的 Agent / Skill 开发者。 ## 使用示例 选择 **均衡**,填写: ```text 城市:上海市 商圈 / 地标:人民广场 预算:35 元 热量上限:700 kcal 蛋白目标:35 g ``` 服务端会找到附近门店,读取实时菜单与营养数据,然后返回: ```text 方案 A:均衡首选 主食 + 小食 / 饮品 总价不超过 35 元 热量不超过 700 kcal 展示蛋白质、每元蛋白质与推荐理由 方案 B:蛋白加码 优先提高蛋白质,同时守住预算和热量 方案 C:省心搭 给出更省钱、但仍完整的组合 ``` > 演示截图中的商品、价格和活动来自 MCP 脱敏快照。实际运行时以当前门店返回结果为准。 ## 本地运行 ### 环境要求 - Node.js 20+ - npm 10+ - 一个麦当劳 MCP Token ### 安装 ```bash
- 目标用户
目标用户包括工作日午餐时间有限的上班族、有预算上限的学生和健身人群、需要控制热量的人、想先看优惠的用户,以及想将麦当劳MCP接入实际产品的开发者。
查看 README 依据
- **安全降级**:未配置 Token 或 Tool 暂时不可用时,使用明确标记的脱敏演示快照。 ## 目标用户 - 工作日午餐时间有限、希望快速做决定的上班族; - 有预算上限、想提高每一元蛋白质回报的学生和健身人群; - 需要控制热量、但仍希望保留选择感的人; - 想先看优惠与活动,再去下单的麦当劳用户; - 想把麦当劳 MCP 接入实际产品的 Agent / Skill 开发者。 ## 使用示例 选择 **均衡**,填写: ```text 城市:上海市 商圈 / 地标:人民广场 预算:35 元 热量上限:700 kcal 蛋白目标:35 g ``` 服务端会找到附近门店,读取实时菜单与营养数据,然后返回: ```text 方案 A:均衡首选 主食 + 小食 / 饮品 总价不超过 35 元 热量不超过 700 kcal 展示蛋白质、每元蛋白质与推荐理由 方案 B:蛋白加码 优先提高蛋白质,同时守住预算和热量 方案 C:省心搭 给出更省钱、但仍完整的组合 ``` > 演示截图中的商品、价格和活动来自 MCP 脱敏快照。实际运行时以当前门店返回结果为准。 ## 本地运行 ### 环境要求 - Node.js 20+ - npm 10+ - 一个麦当劳 MCP Token ### 安装 ```bash
- 使用方式
通过网页界面使用,支持在线演示(GitHub Pages纯前端版)和本地运行(Node服务)。本地运行需要Node.js 20+、npm 10+,可选配置麦当劳MCP Token以启用实时数据,否则使用脱敏演示数据。
查看 README 依据
# M餐搭子 [](https://github.com/xanthichi/mcd-meal-mate/actions/workflows/ci.yml) [](https://xanthichi.github.io/mcd-meal-mate/) > 不猜菜单,认真算一餐。 **M餐搭子**是一个基于麦当劳 MCP 实时数据的智能搭餐 Skill。输入城市、地标、预算、热量上限和蛋白质目标,它会从当前门店的真实菜单里选出三套可执行的组合,并把每一餐的价格、热量、蛋白质和 MCP 调用链一起摊开给你看。 本项目参加 **2026 麦当劳程序员创意开发大赛**,为非麦当劳官方产品。 **在线体验:** <https://xanthichi.github.io/mcd-meal-mate/> GitHub Pages 版本是纯前端演示版,支持完整条件调整与搭餐计算,使用脱敏菜单快照;实时 MCP 版本需要运行仓库内的 Node 服务。
- **安全降级**:未配置 Token 或 Tool 暂时不可用时,使用明确标记的脱敏演示快照。 ## 目标用户 - 工作日午餐时间有限、希望快速做决定的上班族; - 有预算上限、想提高每一元蛋白质回报的学生和健身人群; - 需要控制热量、但仍希望保留选择感的人; - 想先看优惠与活动,再去下单的麦当劳用户; - 想把麦当劳 MCP 接入实际产品的 Agent / Skill 开发者。 ## 使用示例 选择 **均衡**,填写: ```text 城市:上海市 商圈 / 地标:人民广场 预算:35 元 热量上限:700 kcal 蛋白目标:35 g ``` 服务端会找到附近门店,读取实时菜单与营养数据,然后返回: ```text 方案 A:均衡首选 主食 + 小食 / 饮品 总价不超过 35 元 热量不超过 700 kcal 展示蛋白质、每元蛋白质与推荐理由 方案 B:蛋白加码 优先提高蛋白质,同时守住预算和热量 方案 C:省心搭 给出更省钱、但仍完整的组合 ``` > 演示截图中的商品、价格和活动来自 MCP 脱敏快照。实际运行时以当前门店返回结果为准。 ## 本地运行 ### 环境要求 - Node.js 20+ - npm 10+ - 一个麦当劳 MCP Token ### 安装 ```bash
git clone <your-repository-url> cd mcd-meal-mate npm install cp .env.example .env ``` 编辑 `.env`: ```dotenv MCD_MCP_TOKEN=YOUR_MCD_MCP_TOKEN PORT=8787 ``` 启动开发环境: ```bash npm run dev ``` 浏览器打开 <http://localhost:5173>。 ### 无 Token 体验 不配置 `MCD_MCP_TOKEN`,直接运行: ```bash npm install npm run build npm start ``` 打开 <http://localhost:8787>,页面会明确显示“演示数据”。 ## 命令 | 命令 | 作用 | | --- | --- | | `npm run dev` | 启动 Express API 与 Vite 热更新 | | `npm run build` | 构建前端并编译服务端 | | `npm start` | 启动生产服务 | | `npm test` | 运行组合与营养解析测试 | | `npm run check` | 类型检查 + 服务端编译检查 + 测试 | ## 部署 ### Docker ```bash
- 部署要求
本地运行需要Node.js 20+、npm 10+,可选配置麦当劳MCP Token(环境变量MCD_MCP_TOKEN)以启用实时数据,不配置则使用演示数据。
查看 README 依据
- **安全降级**:未配置 Token 或 Tool 暂时不可用时,使用明确标记的脱敏演示快照。 ## 目标用户 - 工作日午餐时间有限、希望快速做决定的上班族; - 有预算上限、想提高每一元蛋白质回报的学生和健身人群; - 需要控制热量、但仍希望保留选择感的人; - 想先看优惠与活动,再去下单的麦当劳用户; - 想把麦当劳 MCP 接入实际产品的 Agent / Skill 开发者。 ## 使用示例 选择 **均衡**,填写: ```text 城市:上海市 商圈 / 地标:人民广场 预算:35 元 热量上限:700 kcal 蛋白目标:35 g ``` 服务端会找到附近门店,读取实时菜单与营养数据,然后返回: ```text 方案 A:均衡首选 主食 + 小食 / 饮品 总价不超过 35 元 热量不超过 700 kcal 展示蛋白质、每元蛋白质与推荐理由 方案 B:蛋白加码 优先提高蛋白质,同时守住预算和热量 方案 C:省心搭 给出更省钱、但仍完整的组合 ``` > 演示截图中的商品、价格和活动来自 MCP 脱敏快照。实际运行时以当前门店返回结果为准。 ## 本地运行 ### 环境要求 - Node.js 20+ - npm 10+ - 一个麦当劳 MCP Token ### 安装 ```bash
git clone <your-repository-url> cd mcd-meal-mate npm install cp .env.example .env ``` 编辑 `.env`: ```dotenv MCD_MCP_TOKEN=YOUR_MCD_MCP_TOKEN PORT=8787 ``` 启动开发环境: ```bash npm run dev ``` 浏览器打开 <http://localhost:5173>。 ### 无 Token 体验 不配置 `MCD_MCP_TOKEN`,直接运行: ```bash npm install npm run build npm start ``` 打开 <http://localhost:8787>,页面会明确显示“演示数据”。 ## 命令 | 命令 | 作用 | | --- | --- | | `npm run dev` | 启动 Express API 与 Vite 热更新 | | `npm run build` | 构建前端并编译服务端 | | `npm start` | 启动生产服务 | | `npm test` | 运行组合与营养解析测试 | | `npm run check` | 类型检查 + 服务端编译检查 + 测试 | ## 部署 ### Docker ```bash
- 已知限制
未配置Token或Tool不可用时使用脱敏演示快照;不调用下单、支付、抽奖或积分兑换Tool;输出不构成医疗或营养建议。
查看 README 依据
- **安全降级**:未配置 Token 或 Tool 暂时不可用时,使用明确标记的脱敏演示快照。 ## 目标用户 - 工作日午餐时间有限、希望快速做决定的上班族; - 有预算上限、想提高每一元蛋白质回报的学生和健身人群; - 需要控制热量、但仍希望保留选择感的人; - 想先看优惠与活动,再去下单的麦当劳用户; - 想把麦当劳 MCP 接入实际产品的 Agent / Skill 开发者。 ## 使用示例 选择 **均衡**,填写: ```text 城市:上海市 商圈 / 地标:人民广场 预算:35 元 热量上限:700 kcal 蛋白目标:35 g ``` 服务端会找到附近门店,读取实时菜单与营养数据,然后返回: ```text 方案 A:均衡首选 主食 + 小食 / 饮品 总价不超过 35 元 热量不超过 700 kcal 展示蛋白质、每元蛋白质与推荐理由 方案 B:蛋白加码 优先提高蛋白质,同时守住预算和热量 方案 C:省心搭 给出更省钱、但仍完整的组合 ``` > 演示截图中的商品、价格和活动来自 MCP 脱敏快照。实际运行时以当前门店返回结果为准。 ## 本地运行 ### 环境要求 - Node.js 20+ - npm 10+ - 一个麦当劳 MCP Token ### 安装 ```bash
types.ts 前后端共享类型 ``` 后端使用原生 `fetch` 与麦当劳 MCP Streamable HTTP Server 通信,避免把 Token 暴露给浏览器。菜单和营养结果有内存缓存,生产构建由同一个 Express 进程提供 API 与静态页面。 ## MCP 集成 完整 Tool、调用流程、业务价值与安全边界见 [MCP_INTEGRATION.md](./MCP_INTEGRATION.md)。 脱敏配置示例见 [mcp-config.example.json](./mcp-config.example.json)。 ## 开发与 WorkBuddy WorkBuddy 联动上下文与可复现指令见 [workbuddy.md](./workbuddy.md)。 ## 安全说明 - 仓库不包含真实 Token、密码或账号凭据; - MCP Token 只在服务端环境变量中读取; - 本项目不调用下单、支付、抽奖或积分兑换 Tool; - 不在服务端保存用户输入,不做用户画像; - 餐品供应、价格与活动以麦当劳官方渠道为准; - 输出不构成医疗、营养或其他专业建议。 ## 参赛文件 - [CONTEST_DECLARATION.md](./CONTEST_DECLARATION.md)
README
正在加载 README…
收录信息
- 仓库创建时间
- 2026/10/24 20:39:14
- 首次达标收录
- 2026/10/25 04:21:12
- 统计更新时间
- 2026/10/25 04:51:11
按创建时长与累计 Stars 判断等级。首次达标收录后,即使未达当前门槛仍保留;累计 Stars 和仓库状态会定期更新。确认只有 README 及辅助文件的仓库会停止公开。
模型评估
值得看加权总分 3.9 / 5
由 Jev 模型根据仓库描述与 README 评估,2026/10/25 04:21:12 生成。评分仅供参考,不是代码、安全或许可证审查;热度等级另按创建时长与累计 Stars 计算。
仓库信息
- 最近推送
- 2026/10/24 21:05:27
- 许可证标识
- MIT
- Fork 数
- 0
- 当前状态
- 未归档