hujjun/mcd-saver-strategist
麦当劳省钱点餐助手(麦门精算师)|麦当劳优惠券组合优化 Skill:拉取麦当劳菜单与全部可用优惠券,算出最省的点餐组合,巨无霸套餐 ¥47 → ¥21.9(省 53%)。McDonalds MCP(麦当劳 MCP)coupon optimizer · McDonalds China MCP Server · Agent Skill for WorkBuddy · 麦当劳程序员创意开发大赛参赛作品
概要
mcd-saver-strategist は、マクドナルド中国向けの仮想「価格計算機」として機能する WorkBuddy スキル です。ユーザーが 「ビッグマックセットが欲しい、一番安くするにはどうすればいい?」 のような質問をすると、このスキルは:
- マクドナルド中国 MCP API を呼び出して、現在のメニュー、価格、栄養データ、およびユーザーのアカウントで利用可能なすべてのクーポンを取得します。
- そのデータを JSON リクエストに正規化します。
- 決定的な組み合わせオプティマイザー(
scripts/optimizer.py)を実行し、MCP のスタッキングルール、予算、カロリー制限を尊重しながら、商品とクーポンのすべての合法的な組み合わせを列挙します。 - 最安値で準拠した上位 N 件の組み合わせ を返し、ユーザーが確認した場合は MCP を通じて注文を作成します。
これはコンテスト応募作品(マクドナルド・プログラマー・クリエイティブ開発コンテスト)であり、マクドナルド公式製品ではありません。
クイックインストール
# リポジトリをクローン
git clone https://github.com/hujjun/mcd-saver-strategist.git
# スキルを WorkBuddy スキルディレクトリにコピー
cp -r mcd-saver-strategist/skills/mcd-saver-strategist ~/.workbuddy/skills/
Windows ユーザーは %USERPROFILE%\.workbuddy\skills\ にコピーします。
また、MCP トークン が必要です(README の「申请麦当劳 MCP Token」セクションを参照)。提供されている mcp-config.example.json を使用して、WorkBuddy の 连接器 → 自定义连接器 → 配置 MCP で設定します。
使用方法
- 会話中:「我想吃巨无霸套餐,怎么点最便宜」 のように言います。
- エージェントはメニューと 4 方向クーポンプールを取得し、オプティマイザーを実行して、最も安い実現可能な組み合わせを返します(例:「1+1 随心配 ¥12.9 + 可乐 ¥9 = ¥21.90、¥25.10 節約」)。
- 制約を追加できます:
budget=30→ 30 元未満の最適な食事を表示。max_calories=800→ 低カロリーで安い組み合わせを返します。deliveryモード → 配達料を含め、店頭受け取り専用のクーポンを除外します。
- 確認すると、スキルは MCP の
calculate-priceを呼び出して最終価格を検証し、次にcreate-orderで注文します。
コマンドラインデモ(トークン不要)
リポジトリには小さなオフラインデータセットが含まれており、ローカルでオプティマイザーを試すことができます:
cd skills/mcd-saver-strategist/scripts
python optimizer.py # デフォルトの店舗内シナリオ
python optimizer.py --json # JSON も出力
python optimizer.py --mode delivery --fee 9 # 配達料を含む
python optimizer.py --budget 25
python optimizer.py --max-calories 800
python selftest.py # 19 の組み込みテストを実行
技術的なハイライト
| 機能 | 詳細 |
|---|---|
| 決定的オプティマイザー | 純 Python、標準ライブラリのみ。MCP のスタッキングルール(stackable:false は相互排他を意味)を尊重する剪定付きの網羅的検索。 |
| 外部依存ゼロ | WorkBuddy のサンドボックスと静的 Web デモ(docs/index.html)で動作。 |
| MCP 統合 | メニュー、クーポン、栄養、価格検証、注文作成に MCP エンドポイントを使用。 |
| シナリオ認識 | クーポンには channel フィールド(pickup、delivery、any)があります。オプティマイザーは選択されたシナリオに基づいて自動的にフィルタリングし、必要に応じて配達料を追加します。 |
| 予算/カロリー制約 | オプティマイザーがグローバルな最低価格を見つけながら尊重できる単純な線形制約。 |
| セルフテストスイート | selftest.py には、エッジケース(空のクーポンリスト、競合するクーポンなど)をカバーする 19 のアサーションが含まれています。 |
| オンラインインタラクティブデモ | GitHub Pages ページ(docs/index.html)がブラウザで同じロジックを再現。ユーザーは予算とカロリーのスライダーをドラッグして、即座に結果を確認できます。 |
誰に役立つか
- 学生や会社員:手動でクーポンをやりくりせずに、最も安いマクドナルドの食事を求める人。
- フィットネス/ダイエット愛好家:予算内で低カロリーのオプションが必要な人。
- グループ:複数の食事を注文し、総支出を抑える必要がある人。
- 「クーポンハンター」:多くのクーポンを持ち、最適な組み合わせが必要な人。
ライセンス
MIT(LICENSE を参照)。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト