spideymooon/McOracle

★ 179⑂ 0

不要问 AI,问薯条。一个结合麦当劳 MCP 与 AI 答案之书的 Skill。

About spideymooon/McOracle

spideymooon/McOracle is an open-source project on GitHub, mainly written in Python. 不要问 AI,问薯条。一个结合麦当劳 MCP 与 AI 答案之书的 Skill。 It currently holds 179 stars and 0 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the Today's Trending board, currently at rank #91 with 0 new stars today.

GitHub Repository Details

Repository spideymooon/McOracle · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

McOracle · 麦门神谕

不要问 AI,问薯条。

McOracle 是一个纯 Skill 形态的 AI 神谕体验:向它提出任何问题,它会从 104 条原创神谕中真随机抽取一条答案,包装成一份「麦门启示录」,再通过麦当劳中国官方 MCP 查询真实门店、可售菜单与价格,推荐「今日必点」,并生成一张酒红金色的神秘命运卡。用户明确确认后,可继续进入订单流程。

命运卡示例

示例卡:神谕 NO.021「别在深夜做决定。」· 今日必点 板烧鸡腿堡三件套 · ¥34.50(经 MCP 实时核实)· 1200×1600 PNG

命运可以随机,价格必须真实。

---

目录

---

项目演示

McOracle 的完整链路:提问 → 抽取神谕 → 查询真实菜单 → 核实价格 → 生成命运卡 → (用户确认后)下单。

用户:「今天适合辞职吗?」
   │
   ▼  ① 真随机抽取(scripts/draw-oracle.py,secrets 模块)
神谕 NO.021「别在深夜做决定。」
   + 趣味解读「凌晨一点的你和上午十点的你,不是同一个人。」
   + 行动提示 + 重大事项提醒
   │
   ▼  ② 查询真实门店与菜单(MCP:query-nearby-stores / query-meals)
麦当劳深圳松岗沙江路餐厅 · 100+ 可售 SKU
   │
   ▼  ③ 核实价格(MCP:calculate-price,单位:分)
今日必点:板烧鸡腿堡三件套 —— ¥34.50(MCP 实时核实,无优惠)
   │
   ▼  ④ 生成命运卡(scripts/generate-card.py,固定酒红金模板 + 官方商品图)
examples/oracle-card-NO021-official.png(1200×1600)
   │
   ▼  ⑤ 用户明确「确认下单」→ 复核价格 → create-order → 官方支付入口

只问神谕、不想要推荐时,流程到 ① 即止,不会强迫提供位置或调用 MCP。

---

核心功能与架构

| 模块 | 文件 | 职责 | |---|---|---| | Oracle Engine | scripts/draw-oracle.py + references/oracle-library.json | 104 条原创神谕真随机抽取、本轮锁定、重抽控制(--question / --redraw / --peek) | | Recommendation Engine | references/recommendation-rules.md | 神谕标签 → 餐品方向映射,结合真实菜单与预算给出首选 + 备选 | | MCP Adapter | SKILL.md + MCP_INTEGRATION.md | 调用麦当劳中国官方 MCP 查询门店、菜单、详情、价格与订单 | | Card Generator | scripts/generate-card.py | 固定酒红金模板 + 官方商品图合成 + Pillow 程序排版,输出 1200×1600 PNG | | Order Safety Controller | scripts/validate-order.py | 订单状态机与确认铁律,参数变化使确认失效 | | Skill Orchestrator | SKILL.md | 定义触发条件、执行顺序、工具规则、异常处理与输出格式 |

神谕库

| 分类 | 键 | 条数 | |---|---|---| | 肯定型 | affirmative | 11 | | 否定型 | negative | 12 | | 等待型 | waiting | 13 | | 行动型 | action | 13 | | 反转型 | reversal | 12 | | 好运型 | lucky | 13 | | 幽默型 | humor | 13 | | 麦门专属型 | mcm | 17 |

命运卡(正式视觉)

固定「简洁神秘」风格,每次神谕只输出一张:

---

项目目录结构

McOracle/
├── SKILL.md                      # Skill 编排主文档(触发条件/执行流程/工具规则/异常处理)
├── README.md                     # 本文件
├── MCP_INTEGRATION.md            # MCP 集成说明与实测记录
├── references/                   # 规则与数据
│   ├── oracle-library.json       # 104 条原创神谕(唯一数据源)
│   ├── oracle-rules.md
│   ├── recommendation-rules.md
│   ├── image-design.md
│   └── order-safety.md
├── assets/
│   ├── oracle-card-template.svg  # 正式卡模板的矢量参考
│   └── products/                 # MCP 官方商品图缓存(运行时自动生成)
├── scripts/
│   ├── draw-oracle.py            # 神谕抽取 + 状态锁定
│   ├── generate-card.py          # 命运卡合成与排版
│   └── validate-order.py         # 订单安全状态机(纯逻辑)
├── tests/
│   ├── test-oracle.py            # 神谕库 / 随机性 / 状态锁定
│   ├── test-card.py              # 命运卡真实生成与降级路径
│   └── test-order-safety.py      # 订单安全铁律(Mock,绝不真实下单)
└── examples/
    ├── oracle-card-NO021-official.png   # 正式模板示例(README 首图)
    ├── oracle-card-NO013-official.png   # 正式模板示例
    ├── oracle-demo.md                   # 一次完整神谕交互记录
    └── order-flow-demo.md               # 下单安全流程演示

---

环境要求与依赖安装

pip install Pillow

Mac / Linux 中文字体请确保系统存在(开发环境使用 Windows 的微软雅黑 / 楷体等)。脚本会自动按候选列表选择可用中文字体。

---

安装为 WorkBuddy Skill

1. 获取代码

git clone  McOracle
cd McOracle
pip install Pillow

2. 放入 Skill 目录(二选一)

3. 配置麦当劳中国 MCP(见下一节),并在 WorkBuddy 连接器中启用。

4. 在对话中触发

说明:脚本可独立运行,不依赖 Skill 加载(见「使用示例」)。SKILL.md 已按官方赛事要求命名;若你的 WorkBuddy 版本要求 Skill 注册元数据,请按本地版本要求补齐(详见「能力现状」)。

---

麦当劳中国 MCP 配置

MCP 由赛事官方提供,需先在官方控制台申请 Token(参见 官方 MCP 使用指南)。在 WorkBuddy 的 【连接器】→【自定义连接器】→【配置 MCP】中填入:

{
  "mcpServers": {
    "mcd-mcp": {
      "type": "streamablehttp",
      "url": "https://mcp.mcd.cn",
      "headers": {
        "Authorization": "Bearer YOUR_MCP_TOKEN"
      }
    }
  }
}
⚠️ 请将 YOUR_MCP_TOKEN 替换为你自己的 Token,并妥善保管,不要提交到仓库。

本项目调用的工具(名称与参数以实际 Schema 为准):

| 工具 | 用途 | 状态 | |---|---|---| | now-time-info | 服务端时间 / 时段判断 | ✅ 已实测 | | query-nearby-stores | 到店 / 得来速门店查询 | ✅ 已实测 | | query-meals | 门店真实可售菜单(含官方商品图 URL) | ✅ 已实测 | | query-meal-detail | 餐品组成与规格 / 特调 | ✅ 已实测 | | calculate-price | 价格 / 优惠 / 总价核实(单位:分) | ✅ 已实测 | | create-order | 创建订单(仅用户明确确认后) | Schema 已核实;端到端支付流程见下文说明 | | query-order | 订单状态查询 | Schema 已核实,未实测 | | query-my-coupons / query-store-coupons | 优惠券 | Schema 已核实,未实测 | | delivery-*(麦乐送) | 外送链路 | 流程已设计,未实测 |

详见 MCP_INTEGRATION.md。

---

图片生成与本地模板回退

正式视觉为固定程序化模板,不依赖任何图像生成 API:

1. 模板背景:generate-card.py 内置绘制(深酒红渐变 + 金色双层边框 + 中央发光圆环 + 星点星芒),风格永远一致,且永远不会失败。 2. 餐品主体:按优先级解析——

3. 预览模式:--preview --background <AI背景图> 仅用于风格对比实验,非正式输出。

---

使用示例

脚本独立运行

# 抽取神谕(结果锁定到 scripts/_oracle_state.json)
python scripts/draw-oracle.py --question "今天吃什么?"

查看当前锁定神谕 / 重新抽取

python scripts/draw-oracle.py --peek python scripts/draw-oracle.py --redraw
# 生成命运卡(正式输出:固定模板 + 官方商品图)

--price-verified 仅在价格经 calculate-price 核实后使用

python scripts/generate-card.py \ --oracle-id "NO.021" \ --answer "别在深夜做决定。" \ --interpretation "凌晨一点的你和上午十点的你,不是同一个人。" \ --item-name "板烧鸡腿堡三件套" --item-price 34.5 --price-verified \ --item-image-url "https://menu-img.mcd.cn/.../MS_9900005462_320.png" \ --out examples/oracle-card-NO021-official.png
# 订单安全控制器演示(纯逻辑 Mock,不创建真实订单)
python scripts/validate-order.py demo

在对话中使用

你:麦门神谕,今天适合辞职吗?
McOracle:(真随机抽中 NO.021)别在深夜做决定。 + 解读 + 行动提示 + 重大事项提醒
          今日必点:板烧鸡腿堡三件套 ¥34.50(MCP 实时核实) + 命运卡 PNG

你:准备下单 McOracle:展示订单草稿摘要(门店 / 取餐方式 / 商品 / 价格)→ 请你确认门店与取餐方式 (此时不会创建任何订单)

你:确认下单 McOracle:复核价格 → create-order → 返回真实订单号与官方支付入口 (提醒:创建订单 ≠ 支付成功,不会自动支付)

---

常见问题

Q:它会自己下单扣钱吗? 不会。只有你明确回复「确认下单」后才会调用下单工具;「看看」「推荐一下」「准备下单」都不算确认。创建订单后仍需你在官方页面自行支付,不会自动支付。

Q:价格和麦当劳 App 不一样? 以门店实时查询结果为准;卡片与对话会标注核实时间。未核实的价格一律显示「价格未核实」,绝不显示示例价冒充实时价。

Q:神谕是预测未来吗? 不是。神谕仅供娱乐与启发,不构成任何现实决策依据。涉及辞职、投资、健康、法律等重大事项时,会附加「请结合现实条件独立判断」的提醒。

Q:没有配置 MCP 还能用吗? 能。神谕与(无商品版)命运卡可正常使用;商品推荐会降级并如实标注「价格未核实」,不会编造餐品。

Q:需要图像生成 API Key 吗? 不需要。正式出卡为程序排版;即使配置了图像 API,Key 也只从环境变量读取,绝不写入仓库。

Q:中文会乱码或溢出吗? 不会。命运卡所有文字由 Pillow 程序排版,自动换行 / 自动缩字号;价格使用含 ¥ 字形的字体。

---

测试

python tests/test-oracle.py         # 神谕库 / 随机性 / 状态锁定(Mock)
python tests/test-card.py           # 命运卡真实生成与降级路径(本地真实图片)
python tests/test-order-safety.py   # 订单安全状态机(Mock,绝不真实下单)

当前实际结果:24 / 24 全部通过(三套退出码均为 0):

| 测试 | 项数 | 结果 | 覆盖要点 | |---|---|---|---| | test-oracle.py | 6 | ✅ | 加载 104 条、编号唯一、8 分类齐全、200 次抽取随机性、状态锁定与重抽控制 | | test-card.py | 9 | ✅ | 正式模板默认出卡、1200×1600、餐品进入圆环(像素级校验)、单卡输出、预览需显式开关、素材缺失降级(ok=false 退出码 2)、未核实价格分支、动态内容非硬编码、超长文本不溢出 | | test-order-safety.py | 9 | ✅ | 未确认不得下单、「看看/推荐一下/准备下单/先不/算了」均不算确认、价格与商品变化使确认失效、无真实订单号不得标记下单成功、创建订单 ≠ 支付成功、非法状态转移被拒 |

说明:test-oracle.py 与 test-order-safety.py 为纯逻辑(Mock)测试,不调用任何 MCP 工具、不创建真实订单;test-card.py 在本地产出真实 PNG 用于校验(不依赖网络)。

---

能力现状:已验证 / 未验证 / 已知限制

✅ 已真实验证(真实 MCP 调用 + 真实文件产出)

⚠️ 未完成端到端验证 / 未实测

已知限制

---

安全、隐私、品牌与免责声明

安全与隐私

品牌与免责声明

---

许可证与贡献

参赛文件清单(依据官方赛事要求)

| 文件 | 说明 | 状态 | |---|---|---| | README.md | 项目介绍、安装、示例、目标用户 | ✅ 本文件 | | CONTEST_DECLARATION.md | 参赛声明(官方原件,文件名与内容均不可改动) | ⚠️ 缺失,需从官方仓库原样获取 | | MCP_INTEGRATION.md | 实际使用的 MCP Server / Tool / 调用流程 / 业务价值 | ✅ 已提供 | | 源代码 | 项目主体 | ✅ 已提供 | | workbuddy.md | WorkBuddy 开发对话上下文(参加 WorkBuddy 专项奖励时必交) | ⚠️ 未提供(可选) |

CONTEST_DECLARATION.md 必须从官方仓库原样复制,不得自行改写:

GitHub Stars & Activity

179Stars
0Forks
0Open issues
PythonLanguage

GitHub Popularity

GitHub stars179
Forks0
Open issues0
Primary languagePython
License-
Stars gained today0
Created-
Last pushed-

Trending History

Daily boardrank #91 · ▲ 0 stars

Related AI Projects

1

open-webui / open-webui

Python★ 155,555⑂ 22,677▲ 1,138 stars
→
2

harry0703 / MoneyPrinterTurbo

Python★ 130,506⑂ 20,476▲ 404 stars
→
3

ComposioHQ / awesome-claude-skills

Python★ 77,019⑂ 9,079▲ 78 stars
→
4

mvanhorn / last30days-skill

Python★ 64,151⑂ 5,597▲ 103 stars
→
5

debpalash / VoiceStudio

Python★ 62,687⑂ 6,984▲ 2,277 stars
→
6

hugohe3 / ppt-master

Python★ 61,631⑂ 4,883▲ 618 stars
→
7

Alishahryar1 / free-claude-code

Python★ 60,149⑂ 9,426▲ 1,591 stars
→
8

MadsLorentzen / ai-job-search

Python★ 46,554⑂ 16,108▲ 195 stars
→

More AI Rankings