Peckish — DoorDash ordering について
Peckish は DoorDash の注文向け AI エージェントで、店舗検索、手数料込みの価格比較、カート作成に対応しています。ターミナル、ウェブ、MCP の各インターフェースを備え、注文には毎回ユーザーの明示的な承認が必要です。
主な機能
- 01店舗とメニューの検索
- 02手数料込みの合計額比較
- 03カートの作成とプレビュー
- 04食事の好みを保存
- 05注文前の承認必須
活用シーン
- 01予算と配達時間に合う食事探し
- 02店舗ごとの実際の注文額の比較
- 03定番商品の再注文
- 04配達支出の確認
MCP 対応
MCP サーバーは DoorDash の注文機能を Claude Desktop や Claude Code などのクライアントに公開します。カートの閲覧と作成はできますが、注文には確認ダイアログに対応したクライアントが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
29掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| intent | string | はい | 誰のための依頼か、目標は何かを一行で簡潔に記述します。例:「ユーザーの夕食の注文を手伝う」。ユーザーの発言そのもの、食事・健康・宗教に関する詳細、予算、名前、その他の個人情報は含めないでください。一般的な目標を記述してください。 |
詳細
Peckish 🍜
小腹が空きましたか?聞いてみてください。 DoorDash 向けの AI 注文エージェントです。検索して、手数料込みの実際の合計金額を比較し、カートを作成します。注文はすべて あなた が承認します。Claude と DoorDash 公式の
dd-cli を基盤にしています。
1 つのツールレイヤーで、3 つの利用方法に対応します。
| 利用方法 | 起動方法 | おすすめのユーザー |
|---|---|---|
| ターミナルチャット | peckish | ターミナルを普段使いしている方 |
| ローカルウェブアプリ | peckish-web → http://localhost:4747 | 店舗カード、リアルタイム見積もり、停止ボタン、注文モーダルを備えた、使いやすい UI を求める方 |
| MCP サーバー | claude mcp add peckish -- npx -y peckish-mcp、またはダブルクリックで開く .mcpb | Claude Desktop / Claude Code のユーザー — API キーは不要。Claude のサブスクリプションでモデルを利用できます |
どれを選べばよいですか?
- ターミナルに慣れていますか? → ターミナルチャット。最も高速で、情報量も豊富です。
- アプリのような使い心地を求めていますか? → ローカルウェブアプリ。カード、リアルタイム見積もり、使いやすい注文確定ボタンがそろっています。
- すでに Claude Desktop または Claude Code を使っていますか? → MCP サーバー。API キーも別のチャットウィンドウも不要です。Claude 自体が注文エージェントになり、注文確認はネイティブダイアログに表示されます。
ウェブアプリのスクリプトによるデモです。店舗、価格、カードは架空のものですが、インターフェースと承認プロセスは実際のものです。
更新情報: リリースごとに、詳細なリリースノート、すべての成果物、SHA256SUMS.txt を
Releases で公開しています —
変更履歴については CHANGELOG.md をご覧ください。リポジトリの Watch を設定し(Releases のみ)、更新通知を受け取れます。
git clone 不要。1 行でインストールできます。
npm install -g peckish
アプリを使いたいですか? Mac アプリ(.dmg) をダウンロードしてください — 手順に沿ってセットアップでき、ターミナルを使う必要はありません。詳しくは以下の Mac アプリ をご覧ください。 どちらの方法でも、すべての処理はお使いのマシン上で実行されます。dd-cli がそのマシンに DoorDash のセッションを保持するためです。Mac(Apple Silicon)または Linux x86_64 で動作し、コンテナやクラウドサンドボックスにも対応しています。詳しくは Linux、コンテナ、ヘッドレスホスト をご覧ください。
you › Find me a high-protein dinner under $25 that can arrive within 45
minutes. Avoid mushrooms and excessive fees.
⚙ search_restaurants {"query":"grilled chicken bowls","limit":8} ✓ 2.1s
⚙ get_menu {"store_id":"35406455","filter":"chicken"} ✓ 1.8s
⚙ list_carts {"store_id":"35406455"} ✓ 1.2s
⚙ add_items_to_cart {…} ✓ 2.4s
⚙ preview_order {"cart_uuid":"…"} ✓ 3.9s
Best fit: Sharon Korean Kitchen (4.8★, ~24 min) — Grilled Chicken Bulgogi
Bowl, $16.95. No mushrooms listed. Total with fees: $21.40 on your Visa
ending 1234. Suggested Dasher tip is $3.50 — that, another amount, or none?
~$0.04 turn · $0.04 session
はじめに(ユーザーガイド)
1. 前提条件
- Apple Silicon(M1~M4)搭載の Mac、または Linux x86_64 — dd-cli がビルドを公開している 2 つのプラットフォームです。Peckish はローカル優先です。どのマシンで実行しても、dd-cli が DoorDash のセッションを保持するそのマシンが、すべての利用方法でバックエンドになります。
- Node.js 20 以降 —
node --versionで確認してください。nodejs.org または brew からインストールできます。 - DoorDash CLI へのアクセス(現在、DoorDash のウェイトリストへの登録が必要です)。Peckish には dd-cli ≥ 0.2.1 が必要です。Linux では、Linux ビルドが初めて含まれたリリースである ≥ 0.2.2 が必要です。また、現在のリリースである ≥ 0.2.6 を対象としています。古いバイナリでも注文機能は問題なく使えます。Peckish は起動時に
dd-cli --versionを読み取り、そのビルドで利用できない機能のみを無効にします(dd-cli のバージョン を参照)。リリースは doordash-oss/doordash-cli からダウンロードし、公開されている値と SHA256 チェックサムを照合して検証してから、次を実行してください。
そのマシンでブラウザーを使えませんか(コンテナ、VM、クラウドサンドボックスなど)? Linux、コンテナ、ヘッドレスホスト をご覧ください。# macOS (Apple Silicon) tar -xzf dd-cli-v*-darwin-arm64.tar.gz && cd dd-cli-v*-darwin-arm64 # Linux (x86_64) tar -xzf dd-cli-v*-linux-amd64.tar.gz && cd dd-cli-v*-linux-amd64 bash install.sh # both platforms — installs to ~/.local/bin/dd-cli dd-cli login # sign in to DoorDash in your browser - ターミナル/ウェブの利用方法では Anthropic API キーが必要です (console.anthropic.com) — または、キーは使わず、Claude のサブスクリプションを利用して MCP を使うこともできます(手順 4)。
2. Peckish をインストールする
npm install -g peckish
これで完了です。3 つのコマンドを使えるようになりました。peckish(ターミナルチャット)、peckish-web(Web アプリ)、peckish-mcp(MCP サーバー)です。
ソースからインストールする場合(コントリビューター向け)
git clone https://github.com/CydVilla/peckish.git
cd peckish
npm install
npm test # optional: 25 unit tests, no network needed
npm run dev # terminal chat (or: npm run web / npm run mcp)
3. ターミナルまたは Web で実行する
export ANTHROPIC_API_KEY=sk-ant-… # from console.anthropic.com
peckish # terminal chat
peckish-web # web app → open http://localhost:4747
起動時に Peckish は DoorDash へのサインインを確認し、デフォルトの配達先住所を表示するとともに、忘れていた未完了のカートがあれば知らせます。サインインしていない場合や期限切れの場合、Peckish が修正を提案します。ターミナルでは dd-cli login(ブラウザーが開きます)の実行前に確認を求め、Web アプリではサインインカードを表示します。また、会話の途中でも、エージェントがどの画面でも同じサポートを提案できます。承認してブラウザーでサインインすれば、中断したところから再開します。ブラウザーのないマシンでは、Peckish はこの提案を省略し、代わりにトークンの注入方法を案内します。以下を参照してください。
4. Claude 内で実行する方法もあります — API キーは不要です
Claude 自体が注文エージェントとなり、モデルの利用料金は Claude のサブスクリプションで支払われます。クライアントに合った方法を選んでください。
Claude Code — 1 行で設定できます。
claude mcp add peckish -- npx -y peckish-mcp
Claude Desktop — Releases から peckish-0.2.2.mcpb をダウンロードし、ダブルクリックします。Claude Desktop はブラウザー拡張機能と同じようにインストールします。ターミナルも、Node のインストールも、JSON の編集も必要ありません。
Claude Desktop を手動で設定する場合
~/Library/Application Support/Claude/claude_desktop_config.json に追加します。
{
"mcpServers": {
"peckish": {
"command": "npx",
"args": ["-y", "peckish-mcp"]
}
}
}
dd-cli が ~/.local/bin/dd-cli にない場合は、"env": { "DD_CLI_PATH": "/your/path/to/dd-cli" } を追加してください。デスクトップアプリはシェルの PATH を引き継ぎません。
Peckish は MCP Registry にも io.github.CydVilla/peckish として登録されているため、レジストリを参照できるクライアントから直接見つけられます。
Claude Desktop を再起動し、夕食を探すよう頼んでください。注文の確認はネイティブダイアログで表示されます。ダイアログを表示できないクライアントでは、メニューの閲覧やカートの作成はできますが、注文はできません(安全側に倒して処理を拒否します)。
5. 日常的な使い方
次のように話しかけます。
- 「25ドル以下で、45分以内に届く高タンパクの夕食を探して。マッシュルームと高すぎる手数料は避けて。」
- 「上位2つの実際の合計金額を、手数料込みで比較して。」
- 「Sharon Korean でいつもの注文を再注文して。」
- 「先月、デリバリーにいくら使った?」
- 「この店って本当においしいの?」(ウェブのレビューを確認します)
- 「マッシュルームは絶対に入れないで。」 → 設定が永続的に保存され、次回から自動で適用されます
- 「Whole Foods で牛乳、卵、牛ひき肉を1ポンド買って。」
注文の確定は、必ず最後にあなた自身が明示的に確認して完了します。ターミナルで yes と入力する、ウェブモーダルで 注文する をクリックする、または Claude Desktop のダイアログを承認します。それまでは、Peckish が明細付きの見積もりを表示し、チップを確認して、請求先のカード名を伝えます。何かを断ると、それ以上は進みません。
操作と管理
| 場所 | 内容 |
|---|---|
| ターミナル | /prefs 保存済みの設定 · /cost セッションの支出 · /reset 新しい会話 · /quit · Ctrl+C で実行中のターンを停止 |
| ウェブ | 停止ボタンでターンをキャンセル · 新しいチャットでリセット · ヘッダーのチップにセッションのコストを表示 · 住所チップをクリックして配送先住所を切り替えます(住所のテキストを編集するには doordash.com を使用します。Peckish は自動で変更を反映します) |
| 両方 | 設定は ~/.peckish/preferences.json に保存されます。すべてのツール呼び出しと確認の監査ログは ~/.peckish/logs/*.jsonl に書き込まれます |
**コスト:**デフォルト設定は、十分な品質を保ちながら低コストになるよう調整されています。claude-sonnet-5 を中程度の処理量で使用し、システムプレフィックスと会話の末尾でプロンプトキャッシュを有効にし、サーバー側のコンテキスト編集によって長時間のセッションで古くなったメニューのペイロードを整理します。コストメーターには、ターンごとおよびセッションごとのおおよその支出が表示されます。最高品質にするには、DD_AGENT_MODEL=claude-opus-4-8 DD_AGENT_EFFORT=high を設定します。(MCP では、クライアントがモデルを選択し、その料金を支払います。)
トラブルシューティング
| 症状 | 対処方法 |
|---|---|
DoorDash sign-in is missing or expired | 組み込みのサインインアシストを受け入れます(dd-cli login が実行されます)。または、ターミナルで自分で実行します |
| ヘッドレス Linux マシンで同じ症状が発生する | サインインに使えるブラウザーがありません。ブラウザーのあるマシンで dd-cli export-token を実行し、こちらで DD_CLI_ACCESS_TOKEN=… を設定します(詳細) |
| dd-cli のアップグレード直後に認証エラーが発生する | 新しい CLI バージョンでは新しいスコープが必要になる場合があります。再度サインインしてください(アシスト、dd-cli login、または新しい export-token を使用) |
Anthropic authentication failed | 同じシェルで export ANTHROPIC_API_KEY=… を設定し、再起動します |
dd-cli binary not found | dd-cli をインストールする(手順1)か、DD_CLI_PATH=/path/to/dd-cli を設定します |
お使いのマシン向けの no dd-cli build | dd-cli が提供されているのは macOS arm64 と Linux x86_64 のみです。Intel Mac と Linux arm64 では Peckish を実行できません |
| ウェブアプリのポートが使用中 | PECKISH_PORT=5757 peckish-web |
| ターンが止まらなくなった | Ctrl+C(ターミナル)/停止(ウェブ)—履歴は正常にロールバックされます |
環境変数:DD_AGENT_MODEL(デフォルトは claude-sonnet-5)、DD_AGENT_EFFORT
(low~max、デフォルトは medium)、DD_CLI_PATH、PECKISH_PORT(デフォルトは 4747)、
DD_CLI_ACCESS_TOKEN(dd-cli 自体が読み取る値。ブラウザーなしのサインインに使用)。
Mac アプリ
ターミナルを一切見たくない方向けの、ダブルクリックで起動できるアプリです。
Releasesから
Peckish-x.y.z-arm64.dmgをダウンロードし、
Peckishを「アプリケーション」にドラッグして開きます。
**初回起動時(Gatekeeper):**アプリはアドホック署名されていますが、公証は受けていません(有料の Apple Developer ID がないため)。そのため、初回は通常のダブルクリックでは macOS がアプリを開きません。アプリを右クリック →「開く」→「開く」(または「システム設定」→「プライバシーとセキュリティ」で許可)してください。この操作は一度だけ必要です。
macOS に**「Peckish は壊れているため開けません」**と表示される場合は、この問題が修正される前のビルドを使用しているか、ダウンロード時に隔離属性の処理に問題が起きています。一度解除すれば、通常どおり開けます。
xattr -cr /Applications/Peckish.app
初回セットアップはアプリ内で完了します。ボタンを3つ押すだけで、ターミナルは不要です。
- DoorDash CLI — ワンクリックのガイド付きインストールです(公式リリースをダウンロードし、実行前にSHA256チェックサムを検証します)。dd-cliをまだ利用できない場合は、ウェイトリストへのリンクがあります。
- DoorDashにサインイン — ブラウザーが開き、完了するとアプリが検出します。サインイン情報はmacOSキーチェーンに保存されます。
- Anthropic APIキー — 一度貼り付けると、Electronの
safeStorage(キーチェーンを使用)で暗号化して保存され、平文では保存されません。
続いてPeckishを開くと、同じウェブアプリ、同じ注文確認モーダル、同じ安全策を利用できます。このアプリは、ローカルサーバーをランダムなローカルホスト専用ポートで実行するシェルにすぎません。Apple Siliconが必要です。Node.jsは不要です(アプリに独自のランタイムが同梱されています)。
自分でビルドする場合:cd desktop && npm install && npm run dist →
desktop/dist/Peckish-*.dmg。
.dmgがMac専用の唯一の提供形態です。ターミナル、ウェブ、MCPの各提供形態はLinuxでも動作します。
Linux、コンテナー、ヘッドレスホスト
dd-cli v0.2.2でLinux(amd64)ビルドが追加されました。これにより、Peckishの3つの提供形態すべてがLinux x86_64で変更なしに動作します。同じツール、同じ注文ゲート、同じ監査ログを利用できます。同じリリースページからdd-cliをインストールし(アセット
dd-cli-v<version>-linux-amd64.tar.gzを使用し、SHA256を検証してからbash install.shを実行)、続いてnpm install -g peckishを実行してください。バイナリを~/.local/bin/dd-cli以外の場所に置いた場合は、DD_CLI_PATHを設定してください。Peckishは/usr/local/bin/dd-cliとPATHも確認します。
デスクトップセッションがある場合(DISPLAYまたはWAYLAND_DISPLAYが設定されている場合)、何も変わりません。dd-cli loginでブラウザーが開き、組み込みのサインイン支援機能はMacとまったく同じように動作します。
デスクトップセッションがない場合(コンテナー、VM、クラウドサンドボックス、ポートフォワーディングのないSSHなど)、ブラウザーフローを完了できないため、Peckishはこの方法を提示せず、代わりにトークンを使う方法を案内します(終了しないログインプロセスを起動したり、実行できない「dd-cli loginを実行してください」という案内を表示したりしません)。
# 1. on a machine that HAS a browser (dd-cli ≥ 0.2.2)
dd-cli export-token
# 2. in the environment that runs Peckish
export DD_CLI_ACCESS_TOKEN='<the token>'
peckish # or peckish-web / peckish-mcp
dd-cliはPeckishが渡す環境変数からトークンを取得するため、キーチェーンやブラウザーがなくても、すべての提供形態で認証できます。
- このトークンを使うとDoorDashアカウントにリアルタイムでアクセスできます。実際に注文することも可能です。パスワードと同じように扱ってください。実行環境のシークレットストアに保管し、イメージレイヤーやシェルの履歴に残る
docker run -e、コミット済みの.envには含めないでください。期限が切れたら、dd-cli export-tokenで新しいトークンを発行してください。 - 注文ゲートに変更はありません。 注文を確定するには、引き続き使用中の提供形態で明示的な承認が必要です(
yesと入力する、ウェブモーダルを使う、またはMCPダイアログで承認する)。ヘッドレスとはブラウザーを使わないという意味であり、無人で注文できるという意味ではありません。 - **コンテナー内の
peckish-web**は、設計上、コンテナー内の127.0.0.1にバインドされるため、公開ポート(-p 4747:4747)からはアクセスできません。コンテナーを--network host(Linux)で起動するか、ポートが一切不要なターミナルまたはMCPの提供形態を使用してください。 - サポート対象外: Linux arm64とIntel Macです。dd-cliはどちらのビルドも公開していないため、Peckishは原因が分かりにくい形で失敗するのではなく、その旨を明示します。
できること
- 検索 → メニュー → カート → プレビュー → 確認 → 注文送信。実際の手数料と到着予定時刻(
order preview)に基づいて、あらゆるおすすめを提示します。 - 比較注文:最終候補を最大3店選んでカートを作成し、実際の合計金額、手数料の割合、到着予定時刻を比較して1店をおすすめし、候補から外れたカートを削除します。
- 手数料を抑える方法:同意を得たうえでプロモーションを検索し、受け取りと配達を比較します。DoorDash クレジットの有無を表示し、DashPass のステータスも確認できます。
- 記憶:食事のルールや習慣は、セッションや利用場所をまたいで保持されます。
- 注文履歴:注文頻度から「いつもの注文」を特定し、レシートに基づく正確な支出の内訳を示します。注文し直す際は、商品がひそかに削除されていないか確認します。
- Claude のサーバー側ウェブ検索によるウェブ上のレビュー(価格の確認には使用しません。注文データの唯一の信頼できる情報源は dd-cli です)。
- グループカート(0.4.0 で追加):「チームでグループ注文を始めて、1人あたり25ドル」などと頼むと、共有可能なカートリンクを作成します。1人あたりの支出上限は任意で設定でき、全員が参加した後にホストが内容を確認して注文を送信します。
- ゲスト用サブカート(新機能):DoorDash アカウントを持っていない人の注文もできます。「Luke Wulf 用に野菜のブリトーを追加して」と頼むと、その人の商品がグループカート内の専用サブカートに追加されます。ゲストはサインインもアプリのインストールも不要です。毎回同じ名前を指定すると、その人の商品がまとめられます。「誰が注文した?」と聞けば、追跡対象の人を確認できます。DoorDash がゲストごとに発行する認証情報は Peckish が保持し、あなたやモデルには表示されません。詳しくはゲスト用サブカートをご覧ください。
- 優先配達(新機能):最速の配達を希望すると、優先配達を選択できます。カートごとに提案され、承認前に見積もりへ料金が反映されます。
- クレジットの管理(新機能):DoorDash クレジットはデフォルトで適用されます。注文時に「クレジットを使わないで」と伝えると、適用をやめられます。
- 大手チェーン(新機能):Domino's、Sweetgreen、Dave's Hot Chicken などの大手チェーンも注文できるようになりました(dd-cli ≥ 0.2.1)。
- 検索フィルター(新機能):「30分以内に届く安い店」のような条件でサーバー側の検索結果を絞り込めます。DashPass 限定、価格帯、到着までの最大時間、検索範囲を指定できるため、30件の結果を取得して選別する必要はありません。
- プロモーション対応メニュー(新機能):メニューや商品詳細には、店舗で現在実施中のプロモーションと対象商品が表示されます。配達先住所を基準に価格が計算されるため、チェックアウト時ではなく商品を選んでいる間にお得な情報が提示されます。
- 受け取り状況をひと目で確認(新機能):検索結果には、各店舗で現在受け取り可能か、日時を指定できるか、後で受け取り可能になるかが表示されます。手数料が気になるときに便利です。
- 事前予約(新機能):現在営業していない店舗も検索結果から除外せず、「6時に営業開始です。時間を指定して注文できます」と案内します。
- 重量で価格が決まる商品(新機能):デリ、精肉店、青果店の商品は、各商品固有の単位で小数の数量を指定できます。料金は実際の重量に基づくため、合計金額は見積もりであることを Peckish が伝えます。
- 住所検索(新機能):まだ保存していない住所への配達も可能です。Peckish が住所を検索し、正確な候補を選んでもらってから、保存するか確認します(保存するとアカウントのデフォルト住所になります)。
- 注文のライブ追跡(新機能):「料理はどこ?」と尋ねると、注文の受付、進捗、現在の到着予定時刻、遅延の傾向、キャンセル理由まで、注文の全段階に基づいて回答します。単に「注文は通りましたか?」と確認するだけではありません。
- 福利厚生(会社の予算と経費コード)、配達日時の指定、受け取り、食料品・小売品・ペット用品・アルコールの注文、グループ注文履歴。
ゲストのサブカート
DoorDash のグループカートには 2 種類の人のための商品が入ります。それぞれ動作が異なります。
- 参加者は自分の DoorDash アカウントを持っています。グループカートのリンクを開き、自分の身元で自分の商品を追加します。Peckish はリンク自体を使って、あなたに代わって参加します。
- ゲストはアカウントを持たず、DoorDash を操作することもありません。ホストのアカウントがゲストに代わって、名前を付けたサブカートに商品を追加します。これにより、CLI を使える人が 1 人しかいないチームでも「みんなの希望を教えて」と頼めます。
DoorDash は、ゲストが初めて商品を追加したときに、そのゲスト専用のトークンを発行します。これはそのゲストのサブカート用のベアラー資格情報です。返されるのは一度だけです。cart show で表示されることはなく、再取得するエンドポイントもありません。dd-cli は、トークンをサーバー側に保管し、ログに記録しないよう案内しています。
そのため、Peckish がトークンを保管します。トークンは ~/.peckish/guests.json(モード 0600)にカートとゲスト名をキーとして保存され、モデルに結果が渡される前に、すべてのツールの結果から取り除かれます。そのため、すべての結果のプレビューを記録するセッション監査ログにも書き込まれません。モデルが扱うのは名前だけです。「Luke Wulf」と指定すれば、Peckish が適切な資格情報を使用します。アシスタントがトークンを読み取ったり、要求したり、繰り返したりする方法はありません。それが意図した設計です。
知っておくべき点は 2 つあります。
- スペルが重要です。「Luke Wulf」と「Luke Wolf」は、それぞれ別のサブカートを持つ 2 人のゲストとして扱われます。Peckish は大文字と小文字の違いと余分なスペースだけを無視します。
- **ファイルが重要です。**カートを使用中にファイルを削除すると、該当するゲストの継続性が失われます。復旧するには、同じ名前でゲストを最初から登録し直すしかなく、その場合、商品リストは分岐します。Peckish は注文が送信されたとき、またはカートが削除されたときに、そのカートのゲスト情報を削除し、30 日を超えた情報も整理します。
dd-cli のバージョン
dd-cli は独立したバイナリで、独自のリリースサイクルを持っています。0.2.2 以降の各リリースでフラグが追加されています。Peckish はプロセスごとに一度だけ dd-cli --version を確認し、問題が起きる代わりに、機能を制限して動作します。
| dd-cli | Peckish で利用できる機能 |
|---|---|
| ≥ 0.2.1 | 基本機能:すべてのコマンドでの --intent、エンタープライズ向けチェーン |
| ≥ 0.2.2 | Linux ビルド、ヘッドレスサインイン用の export-token |
| ≥ 0.2.3 | find_address / add_address、注文ステータスの全ライフサイクル、注文履歴でのグループ注文 |
| ≥ 0.2.4 | メニューと商品詳細でのプロモーション、保存済みの address_id を使った検索 |
| ≥ 0.2.5 | 検索フィルター、店舗ごとの受け取り可否、事前予約可能な時間帯、重量で価格が決まる商品 |
| ≥ 0.2.6 | 選択したカードでの支払い、DoubleDash、販売事業者をまたいだ価格比較、Meal Manager のカレンダー、デフォルトに設定せずに住所を保存 |
次の 2 つのスクリプトで、この確認を徹底しています。
node scripts/verify-dd-cli.mjs # what YOUR dd-cli actually accepts
node scripts/check-dd-cli-release.mjs # is a newer dd-cli out?
verify-dd-cli.mjs は、実際にサインイン済みのバイナリに対して Peckish が実行するコマンドを実行し、受け付けられるフラグと、応答に含まれるフィールド名を報告します。読み取り専用のため、カート、保存済み住所、注文が作成されることはありません。dd-cli のアップグレード後や、Peckish から送信した内容が拒否された場合に実行してください。報告内容への対応については、docs/dd-cli-verification.md のチェックリストを参照してください。check-dd-cli-release.mjs は CI で毎週実行され、Peckish が対象としているバージョンより新しい dd-cli のリリースが公開されると、イシューを作成します。
保存済みの住所に基づいてメニューの価格を調べ、プロモーションの適用可否を正しく判定する、といった Peckish 自身が適用する動作は、バージョン確認によってバイナリの対応が確認されるまで無効になります。モデルが明示的に要求したフラグは常にそのまま渡されるため、古いバイナリは Peckish が要求を黙って無視するのではなく、該当フラグを示すエラーを返します。検出されたバージョンはセッションコンテキストに記録されるため、アシスタントは利用可能な機能を把握し、バイナリでは実行できないことを頼まれた場合にのみ、アップグレードを提案します。
アーキテクチャ
terminal REPL local web app MCP client (Claude Desktop…)
src/index.ts src/web.ts + public/ src/mcp.ts
└────────────┬─────────┘ │ (client's model reasons;
↓ │ server instructions guide it)
Claude agent loop, streaming │
src/agent.ts · claude-sonnet-5 · strict tools │
· adaptive thinking · context editing │
· prompt caching · web_search · cost meter │
└───────────────┬─────────────────┘
↓
38 typed tools — src/tools.ts (strict: true)
↓
sanitizing wrapper — src/ddcli.ts
↓
dd-cli --json-output → DoorDash
安全モデル
注文の確定には、必ずモデルではなくインターフェイスによって表示される、人間による明示的な承認が必要です。
| インターフェイス | 承認方法 |
|---|---|
| ターミナル | プロンプトで yes と入力 |
| Web | 「Place order」モーダル(5 分後に自動で拒否) |
| MCP | クライアントの確認ダイアログ。確認機能のないクライアントは注文を確定できません(フェイルクローズ) |
また、すべてのインターフェイスで次のとおりです。
- 厳格なツールスキーマ — API は、ハンドラーの実行前にツール引数が検証されることを保証します(不正な引数のクラスはありません)。
- 中断可能なターン — Ctrl+C/停止すると、履歴はターン開始時点までロールバックされます。
- 監査ログ — すべてのツール呼び出し、引数セット、所要時間、確認結果、送信結果を
~/.peckish/logs/*.jsonlに記録します。 - 送信を確認する前に、チップの確認とカード名の指定が必要です。送信は自動再試行されません(冪等ではありません)。成功は
order statusで確認した後にのみ報告されます。 - 店舗からのテキストはデータとして扱います(ウィジェット/アシスタント指示のフィールドを除去)。読み取り専用の CLI 呼び出しは一時的なエラー時に 1 回再試行しますが、変更を伴う操作は再試行しません。
- Web サーバーはローカルホストからのアクセスのみを許可します(Host と Origin を確認)。
Peckish が DoorDash と共有する情報
dd-cli ≥ 0.2.1 では、すべてのコマンドに --intent メモが必要です。DoorDash によると、このメモは調査や製品改善のために確認される場合があります。DoorDash が公開している形式では、プロンプトの原文を求めています。しかし、食事に関するプロンプトには、食事制限、健康、宗教に関する情報が日常的に含まれます。DoorDash 自身のガイダンスでは、これらを避けるよう求めています。そのため、Peckish はプライバシーをデフォルトとしています。
- **送信される情報:**モデルが一般的なレベルで作成した、1 行の目標要約(例:
Summary: Help the user order dinner)と、user prompt/purpose: "(not shared — Peckish privacy default)"という明示的なマーカー。 - **デフォルトでは送信されない情報:**入力した言葉の原文、食事制限、予算、氏名、保存済みの設定、会話内容。
- 完全な形式をオプトインするには:
PECKISH_INTENT_VERBATIM=1を設定すると、DoorDash のドキュメントで求められているとおり、intent に最初のリクエストの原文が含まれます。
intent に関係なく、DoorDash は API トラフィック自体(検索、カート、注文)を必然的に確認します。これは注文に伴うものです。
リポジトリの構成
| ファイル | 内容 |
|---|---|
src/index.ts | ターミナル REPL インターフェイス(中断、コスト表示、/cost) |
src/web.ts + public/index.html | Web インターフェイス:SSE ストリーミング、カード、停止、確認モーダル、Origin ガード |
src/mcp.ts | MCP stdio サーバー:38 個のツール + セッションコンテキスト、指示、確認ゲート |
src/agent.ts | システムプロンプト + ストリーミングツールループ(ベータ版:コンテキスト編集、web_search、使用状況) |
src/tools.ts | ツールスキーマ(厳格化済み)+ ハンドラー。メニューの絞り込み/フィルタリング |
src/ddcli.ts | execFile ラッパー:エンベロープ解析、UI フィールド除去、エラーマッピング、回数を制限した読み取り専用の再試行 |
src/platform.ts | サポート対象の dd-cli と、ここでのサインインにブラウザーを使用できるか、注入されたトークンが必要かどうか |
src/confirm.ts | 差し替え可能な確認ゲート(フェイルクローズ) |
src/costs.ts / src/logger.ts | コスト計算 · JSONL 監査ログ |
src/prefs.ts | 設定の保存(~/.peckish/) |
tests/unit.test.ts | 単体テスト 108 件(npm test)、ネットワーク不要 |
desktop/ | Mac アプリ(.dmg)用 Electron シェル:初期設定 + サーバーランチャー。エージェントのロジックは含みません |
packages/mcp/ | peckish-mcp npm パッケージ — npx -y peckish-mcp で MCP サーバーを起動するランチャー |
extension/ | Claude Desktop 拡張機能(.mcpb):マニフェスト + 同梱サーバー。node build-manifest.mjs && mcpb pack . peckish.mcpb |
server.json | MCP Registry のメタデータ(io.github.cydvilla/peckish) |
リリース
すべてを1つのタグからリリースします。.github/workflows/release.yml は2つの npm パッケージを公開し、MCP Registry エントリーを登録し、.mcpb と .dmg をビルドして、両方を GitHub リリースに添付します。
npm version patch # or edit the versions by hand
git push && git push --tags
各公開ステップはすべて公開済みの場合はスキップされるため、失敗後にタグを再実行しても安全です。.github/workflows/ci.yml は、すべてのプッシュで型チェック、テスト、メタデータの整合性チェック、および実際の MCP ハンドシェイクを実行します。
scripts/check-consistency.mjs は、複数のファイルにまたがり、気づかないうちにずれが生じるメタデータをチェックします。対象は、レジストリの名前空間の大文字・小文字、server.json の name と mcpName の一致、レジストリの説明文の100文字制限、拡張機能が公開するツール一覧です。タグを付ける前に、ローカルで実行してください。
自動化の初回セットアップ
npm — npmjs.com で peckish と peckish-mcp の両方に
信頼された公開を設定します
(プロバイダー:GitHub Actions、リポジトリ:
CydVilla/peckish、ワークフロー:release.yml)。これによりシークレットは不要になります。または、「bypass 2FA」を有効にしたきめ細かなアクセストークンを使って、リポジトリシークレット NPM_TOKEN を追加します。
MCP Registry — 設定は不要です。ワークフローは mcp-publisher login github-oidc で認証し、GitHub の OIDC トークンによってリポジトリの所有者が CydVilla であることが証明されるため、io.github.CydVilla/* 名前空間が付与されます。
Mac アプリの署名 — .dmg は署名なしでビルドされます。公証済みビルドには Apple Developer ID に加えて、CSC_LINK/CSC_KEY_PASSWORD と公証用シークレットが必要です。
注意事項と制限
- 設計上、ローカルファーストです。ホスト型の配信(SMS ボット、音声)には DoorDash のパートナー API が必要になるため、ここではお使いのマシンがバックエンドになります。
- ストアごとに開けるカートは1つです(DoorDash のルール)。Peckish は競合をチェックして確認を求めます。
payment-method listで確認できるのはカードのみです。ウォレットの既定の支払い方法(Apple Pay など)は、一般的な方法で確認するか、ブラウザーのチェックアウト URL から確認します。- 年齢制限のある商品はエージェントから送信できません。その場合はチェックアウト URL にフォールバックします。
- 人気度データは意図的に使用していません(dd-cli のガイダンスによるものです)。その不足を補うため、出典を明記してウェブ上のレビューを利用します。
- 費用の数値は、公開価格でのトークン使用量に基づく概算です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。