メインコンテンツへ移動
AIチュートリアル

マック節約アシスタント教程:マクドナルド MCPで注文を最適化し、クーポン損失を監査

本チュートリアルでは、マック節約アシスタントの設定と使い方を紹介します。マクドナルド中国の MCP を通じて店舗メニュー、クーポン、過去の注文履歴を照会し、セット価格の比較、追加購入の落とし穴の識別、クーポンの潜在損失の計算、消費習慣の分析を行います。

マック節約アシスタント教程:マクドナルド MCPで注文最適化とクーポン損失監査

プロジェクト概要

マック節約アシスタント(mcd-coupon-strategist)は、マクドナルド中国 MCP を基盤に構築された注文コスト管理アシスタントです。「この注文をどう選べば最も安いか」に答えるだけでなく、過去の注文履歴とクーポンの保有状況を分析し、期限切れ間近のクーポンが実際の損失になりつつあるかどうかを知らせます。

このプロジェクトでは、節約の課題を2つの流れに分けています。

  • 短期的な最適化:現在の店舗メニューとアカウントで利用可能なクーポンを読み取り、単品、セット、クーポン利用、追加購入の組み合わせを列挙し、calculate-price を使ってそれぞれの実際の価格を取得します。
  • 長期的な監査:order-list と query-my-coupons を使い、支出、客単価、購入頻度の高い商品、期限切れ間近のクーポンを分析します。

このプロジェクトの中心的な視点は、単に消費を続けるよう促すことではなく、まず発生している損失を見つけることです。

主な機能と仕組み

現在の店舗に基づく実際の価格計算

店舗によって価格や提供状況が異なる可能性があるため、このプロジェクトではメニュー価格を固定しません。候補となるプランは最終的に MCP の calculate-price で計算し、モデルに金額を推測させません。

出力には最低支払額だけでなく、価格差がセット構成、クーポン、追加購入商品のどこから生じたのかも示されます。例えば、3品セットのほうが、ハンバーガーとフライドポテトを単品で2つ購入するより安い場合、システムはセットを明確に推奨し、いくら節約できるかを説明します。

追加購入の落とし穴を識別

クーポンは使えば必ず得になるとは限りません。購入予定の商品が46.5元で、「50元以上で12元引き」を使うために3.5元の商品を追加し、クーポン利用後の支払額が38元になったとします。同じようなセットが33.5元で買えるなら、追加購入のプランはなお4.5元高くなります。

このプロジェクトでは、クーポンに表示された割引額だけでなく、最終的な支払額を比較します。追加商品がもともと必要なものでない限り、このようなプランは積極的に避けるよう促します。

クーポンの潜在損失を計算

「クーポンの潜在損失」とは、期限が近いものの、まだ使われていないクーポンの価値です。MCP が返すクーポンには名称しか含まれない場合があるため、プロジェクトでは現在の店舗メニューと照合して価値を確認します。

  • 割引クーポン:「50元以上で12元引き」は、そのまま12元として計算します。
  • 1つ買うと1つ無料のクーポン:「ミディアムサイズのフライドポテト1つ購入で1つ無料」は、該当商品のメニュー価格として計算します。
  • 固定価格クーポン:「ミディアムサイズのアイスアメリカーノ9.9元」は、メニューの通常価格から9.9元を引いて計算します。

メニューから該当商品を見つけられない場合、プロジェクトはクーポン価値を0として記録し、レポートに注記します。根拠のない、もっともらしい推定値を入力することはありません。

長期的な消費習慣を分析

監査モジュールは、過去の注文履歴から注文数、総支出、客単価、購入頻度の高い商品を集計し、構造的な提案を行います。例えば、同じハンバーガーを何度も単品購入している場合、対応するセットと比較するよう促します。セットに変更することで、支出を減らせる可能性があるためです。注文全体の返金は除外され、返金された注文が消費額に含まれないようになっています。

準備

オンライン MCP 機能を使う前に、次の環境を準備してください。

  • MCP カスタムコネクターに対応したクライアント。README で例として紹介されている WorkBuddy など。
  • マクドナルド MCP オープンプラットフォームから取得した Token。
  • ローカルテストを実行する場合は、Python 3.8 以降。

ローカルの4種類のテストには MCP Token は不要です。ただし、実際のメニュー、アカウントのクーポン、過去の注文履歴を照会するには有効な Token が必要です。

MCP Token の取得と設定

手順1:Token を取得する

マクドナルド MCP オープンプラットフォームにアクセスし、携帯電話番号でログインします。コンソールで MCP Token を有効化してコピーしてください。

手順2:MCP 設定を作成する

リポジトリには、機密情報を除いた設定ファイル mcp-config.example.json が用意されています。設定の構造は次のとおりです。

{
  "mcpServers": {
    "mcd-mcp": {
      "type": "streamablehttp",
      "url": "https://mcp.mcd.cn",
      "headers": {
        "Authorization": "Bearer ${MCD_MCP_TOKEN}"
      }
    }
  }
}

${MCD_MCP_TOKEN} を自分の Token に置き換え、MCP Client の設定に書き込みます。実際の Token を公開リポジトリにコミットしたり、スクリーンショット、ログ、問い合わせ内容に掲載したりしないでください。

手順3:WorkBuddy で有効にする

  1. WorkBuddy を開き、左側の「専門家、スキル、コネクター」から「コネクター」タブを選択します。
  2. 「カスタムコネクター」をクリックし、「MCP を設定」を選択します。
  3. Token を置き換えた JSON 設定を貼り付けて保存します。
  4. カスタムコネクター一覧に戻り、mcd-mcp を有効にします。

基本的な使い方

例1:予算に合わせて組み合わせを探す

まず店舗を選択し、予算、食べたい商品の種類、比較したい件数を明確に伝えます。次のように直接入力できます。

マクドナルドでデリバリーを注文します。店舗を選んだら、次を計算してください。
クーポンを持っていて、ハンバーガー1個+フライドポテト1個+ドリンク1杯を食べたいです。予算は40元です。
最も安くなる注文方法は?2つのプランを比較してください。

アシスタントは現在の店舗メニューと利用可能なクーポンを読み取り、候補となる組み合わせを作成し、MCP を使って実際の価格を計算します。典型的な結果では、33.5元のマックチキンバーガー3品セットを推奨し、37元のハンバーガーとフライドポテトの単品購入プランと比較します。

例2:主食とサイドメニューを指定する

予算は35元で、チキン系の主食とサイドメニュー1つが食べたいです。
現在の店舗で販売中の商品を調べ、おすすめ、代替案、非推奨案を提示してください。
また、それぞれのプランがなぜ安い、または高いのか説明してください。

このような指示により、アシスタントは予算、満腹感、商品カテゴリーを同時に考慮できます。絶対価格は最も安くても、要望を満たさない選択肢だけが推奨されるのを防げます。

例3:追加購入する価値があるか判断する

「50元以上で12元引き」のクーポンを1枚持っています。
現在の購入希望に基づき、通常購入、追加購入してクーポンを使う方法、セットに変更する方法の最終支払額を比較してください。
追加購入したほうが高くなる場合は、明確に知らせてください。

比較では、クーポンの割引額ではなく最終的な支払額を重視します。プロジェクトは追加商品のコストを計算に含め、セットと追加購入のどちらが得かを示します。

例4:最近の消費を監査する

最近数か月のマクドナルドの注文を分析してください。
注文数、総支出、客単価を集計し、購入頻度の高い商品を見つけてください。
同時に、期限切れ間近のクーポン、推定価値、残り日数を一覧にしてください。
最後に、今月まず何に対処すべきか教えてください。

これにより長期監査の流れが起動します。出力では、期限切れ間近のクーポンの総価値、消費習慣、実行可能な構造的提案が重視され、単一の注文における最低価格だけにはとどまりません。

ローカルテストの実行

プロジェクトのソースコードを取得したら、リポジトリのルートディレクトリで Python 3.8 以降を使い、次のテストを実行します。

python src/test_saver.py
python src/test_auditor.py
python src/test_adapter.py
python src/test_order_adapter.py
  • test_saver.py:プランの列挙、並べ替え、追加購入の落とし穴の識別を検証します。
  • test_auditor.py:潜在損失、消費習慣、日付の境界値を検証します。
  • test_adapter.py:単位変換と MCP レスポンスの解析を検証します。
  • test_order_adapter.py:注文、クーポンの解析、返金の除外、クーポン価値の推定を検証します。

この4種類のテストはすべてローカルのみで実行でき、MCP Token の設定は不要です。README には追加のパッケージインストールコマンドが記載されていないため、リポジトリ内の実際のコードと連携ドキュメントを基準にしてください。

プロジェクトのアーキテクチャを理解する

このプロジェクトでは、アダプター層によって MCP の生レスポンスとビジネスロジックを分離しています。主なモジュールは次のとおりです。

  • src/saver.py:1回の注文で節約する流れを担当し、候補となる組み合わせを列挙して実際の支払額を比較します。
  • src/auditor.py:長期監査を担当し、クーポンの潜在損失を計算して消費プロファイルを生成します。
  • src/mcd_adapter.py:フィールドのマッピング、返金の除外、クーポン価値の照合、および唯一の「分から元」への変換を担当します。
  • MCP_INTEGRATION.md:MCP Server、ツール、呼び出し手順、実測した呼び出し契約を記録します。
  • SKILL.md:Skill の定義と全体のワークフローを説明します。

アルゴリズム層が MCP の生レスポンスに直接触れないため、フィールドの違いや金額単位の混乱を避けやすくなります。特に、インターフェースによって「分」と「元」の変換方向が異なる可能性があるため、必ずアダプター層で統一して処理してください。

応用テクニック

まず「何を食べたいか」を明確にしてから価格を比較する

最低価格が必ずしも適切なプランとは限りません。プロンプトには主食、サイドメニュー、ドリンク、人数、予算、最低限の要望を記載し、同等の要望を満たすプラン同士で比較できるようにしてください。

節約の理由を表示させる

「どのクーポンを使ったか、どのセットに変更したか、どの商品を追加したか、基準プランと比べていくら節約できるか」を出力するよう求めることができます。これにより結論だけでなく、推奨内容が自分の実際の要望に合っているかも判断できます。

クーポンの表示価値と実際の利益を区別する

理論上12元の価値があるクーポンでも、現在の注文で必ず12元節約できるとは限りません。利用条件、対象店舗、対象商品、追加購入コストによって実際の利益は変わります。クーポンの表示価値と最終支払額の両方を確認してください。

期限が近く、価値が明確なクーポンを優先する

長期監査では、残り日数と確認可能な価値に基づいて並べ替えることができます。メニューから通常価格を照合できないクーポンは、引き続き不明または0として記録し、レポートを完全に見せるために金額を推測してはいけません。

毎回、現在の店舗データを使う

他店舗や過去の注文履歴の価格を再利用しないでください。メニュー、提供状況、クーポンの対象範囲は変わる可能性があるため、毎回の判断は現在の店舗から得られる公式のリアルタイム結果に基づけてください。

アカウント認証情報を保護する

Token は常に環境変数またはクライアントの安全な設定で保存することを推奨します。設定を公開する場合は、${MCD_MCP_TOKEN} のようなプレースホルダーだけを残してください。

設計上の境界と注意事項

  • すべての価格は MCP calculate-price の実際の返却値を基準にします。
  • メニューから確認できないクーポン価値は0として処理し、注記します。推測は行いません。
  • 返金された注文は消費支出に含めません。
  • クーポンを使うために不要な追加購入を促すことはありません。
  • 商品、価格、提供状況、クーポンの対象範囲は、マクドナルド公式チャネルのリアルタイム結果を基準にします。
  • このプロジェクトは独立して開発されたコンテスト作品であり、マクドナルド公式製品ではありません。
  • 出力は消費判断の参考情報であり、医療、栄養、その他の専門的な助言を構成するものではありません。

まとめ

マック節約アシスタントは、リアルタイムの注文最適化と長期的な消費監査を組み合わせます。短期的には実際の価格計算によってセット、単品、クーポンの組み合わせを選び、長期的には注文履歴とクーポンの保有状況から、客単価の高さ、単品購入の繰り返し、クーポンの期限切れといった見えにくい損失を発見します。

MCP Token の設定が完了したら、まず予算と食べたい商品の要望を含む注文リクエストから始め、次に追加購入の比較や月次消費監査を試してみてください。開発者にとっては、saver.py、auditor.py、mcd_adapter.py の分層構造も、MCP を使った2つの処理フローを編成する際の分かりやすい参考になります。