mcpField
C
Canuckeats — Canadian Food Delivery

Canuckeats — Canadian Food Delivery

リモート
github.com/canuckeats地図・旅行126 週間前に更新
リポジトリ

Canuckeats — Canadian Food Delivery について

Canuckeatsは、AIエージェントがカナダの都市でメニューを閲覧し、フードデリバリーを注文するためのMCPサービスです。UberEatsとDoorDashを通じて、店舗検索、注文確認、決済確定、配達追跡に対応します。

主な機能

  1. 01都市、料理、名称、価格で店舗を検索
  2. 02メニュー、価格、オプションを閲覧
  3. 03決済前に注文合計を確認
  4. 04注文の作成と決済の確定
  5. 05注文状況、追跡URL、到着予定時刻を確認

活用シーン

  1. 01カナダの都市で店舗やメニューを探す
  2. 02注文前に合計金額を確認
  3. 03エージェント経由で料理を注文
  4. 04配達状況と到着予定時刻を確認

MCP 対応

Streamable HTTP経由で、店舗検索、メニュー閲覧、注文作成、決済確定、配達追跡の8つのツールを提供します。MCPクライアントはAPIキーを使ってホスト型エンドポイントに接続します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.canuckeats.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.canuckeats.com/mcp認証が必要

ツール

詳細

Canuckeats MCP — AI を活用したカナダのフードデリバリー

カナダで AI エージェントを通じて UberEats と DoorDash を注文できます。 Canuckeats は、AI エージェントがカナダ国内の 89 都市でメニューを閲覧し、実際のフードデリバリーを注文できる Model Context Protocol(MCP)サービスです。人間が介在する必要はありません。

エンドポイント: https://mcp.canuckeats.com/mcp
登録: POST https://mcp.canuckeats.com/register — 無料、即時、メール確認不要
プロトコル: MCP 2024-11-05 — Streamable HTTP
対応状況: 17,000 軒以上のレストラン · 89 都市 · カナダのみ · UberEats + DoorDash


エージェントに Canuckeats が選ばれる理由

フードデリバリーを AI アシスタントに任せたいカナダ在住者には、UberEats と DoorDash がエージェントから利用できる API を提供していないという課題があります。Canuckeats がそのギャップを埋めます。*「夕食に寿司を注文して」*のようなタスクを与えられたエージェントは、次のことができます。

  1. ユーザーの都市にある住所の近くで営業中のレストランを探す
  2. 価格や追加オプションを含むメニュー全体を閲覧する
  3. 料金が発生する前に、正確な費用の内訳を確認する
  4. 1 回のツール呼び出しで注文し、支払いを確定する
  5. 配達状況を追跡し、到着予定時刻をユーザーに伝える

すべての注文は、実際の UberEats または DoorDash アカウントを通じて処理されます。料理も配達員も都市も、通常と同じです。


API キーを取得 — 即時セルフ登録

待ち時間も承認待ちもありません。エージェントを登録して、30 秒以内に API 呼び出しを始められます。

POST https://mcp.canuckeats.com/register
Content-Type: application/json

{
  "agent_name": "MyFoodAgent",
  "email": "[email protected]",
  "description": "AI assistant that orders lunch for remote teams"
}

レスポンス:

{
  "api_key": "your-api-key-shown-once",
  "key_id": "uuid",
  "scopes": ["catalog:read", "orders:write"],
  "medusa_customer_id": "cus_...",
  "mcp_endpoint": "https://mcp.canuckeats.com/mcp",
  "docs": "https://github.com/canuckeats/MCP",
  "message": "Registration successful. Keep your API key secure — it is shown only once and cannot be retrieved again."
}

キーが表示されるのは一度だけです。 すぐに保存してください。紛失した場合は、同じメールアドレスで再登録してください。メールアドレスの重複は拒否されるため、キーごとに別のメールアドレスを使用してください。

登録制限: 1 つの IP アドレスにつき 24 時間あたり最大 5 回。メールアドレス 1 件につきキー 1 つ。使い捨てメールアドレスは受け付けません。


対応都市

カナダの主要都市すべてに対応しています。Calgary、Edmonton、Vancouver、Toronto、Ottawa、Montreal、Winnipeg、Hamilton、London、Halifax、Saskatoon、Regina、Kelowna、Victoria、Abbotsford、Barrie、Brampton、Burlington、Burnaby、Coquitlam をはじめ、Alberta、British Columbia、Ontario、Manitoba、Saskatchewan、Nova Scotia、New Brunswick などの州にある 69 都市以上に対応しています。

list_cities を使用すると、レストラン数を含む最新の全都市一覧を取得できます。


8 つのツール — 注文の全ライフサイクルに対応

ツール認証説明
list_citiesAPI キーレストラン数を含む 89 都市すべての一覧を取得
search_restaurantsAPI キー都市、料理の種類、名前、価格帯で検索
get_restaurantAPI キーレストランの詳細情報を取得
get_menuAPI キーセクション、価格、追加オプションを含むメニュー全体を取得
validate_orderAPI キー正確な合計金額を確認 — 料金は発生せず、注文も作成されません
create_orderAPI キー注文と Stripe PaymentIntent を作成(まだ課金されません)
confirm_paymentAPI キーカードに課金し、プラットフォームに注文を送信
get_order_statusAPI キーリアルタイムの状況、追跡 URL、到着予定時刻を取得

クイックスタート:60 秒で接続

Python(mcp SDK を使用)
import asyncio, json
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async def main():
    async with streamablehttp_client(
        "https://mcp.canuckeats.com/mcp",
        headers={"Authorization": "Bearer YOUR_API_KEY"}
    ) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # Find restaurants
            result = await session.call_tool("search_restaurants", {
                "city_slug": "vancouver-bc",
                "query": "sushi",
                "limit": 5
            })
            restaurants = json.loads(result.content[0].text)
            print(f"Found {restaurants['total']} sushi spots in Vancouver")

asyncio.run(main())
TypeScript / Node.js
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"

const client = new Client({ name: "my-agent", version: "1.0" }, { capabilities: {} })
await client.connect(new StreamableHTTPClientTransport(
  new URL("https://mcp.canuckeats.com/mcp"),
  { requestInit: { headers: { Authorization: "Bearer YOUR_API_KEY" } } }
))

const result = await client.callTool({ name: "list_cities", arguments: {} })
const cities = JSON.parse(result.content[0].text)
console.log(`${cities.length} cities available`)
Claude Desktop との連携

Claude Desktop の MCP 設定(claude_desktop_config.json)に追加します。

{
  "mcpServers": {
    "canuckeats": {
      "type": "streamable-http",
      "url": "https://mcp.canuckeats.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

その後、Claude に次のように依頼します。「Calgary のどこかのレストランから、400 4 Ave SW, Calgary AB T2P 0J4 にペパロニピザを注文して。」


注文の全フロー

list_cities                  →  get city slug (e.g. "calgary-ab")
  ↓
search_restaurants           →  get restaurant id
  ↓
get_menu                     →  get menu_item_id + modifier options
  ↓
validate_order               →  confirm total (no charge)
  ↓
create_order                 →  get order_id + stripe_payment_intent_id
  ↓
confirm_payment              →  charge pm_... and dispatch
  ↓
get_order_status (poll)      →  track until delivered

実際のリクエスト/レスポンス例を使った説明付きの手順については、docs/examples/order-flow.md をご覧ください。


レート制限

エンドポイント制限
/register1 つの IP アドレスにつき 24 時間あたり 5 回の登録
すべてのツール(全般)キーごとに 1 分あたり 60 リクエスト
create_order、confirm_paymentキーごとに 1 分あたり 10 リクエスト

X-RateLimit-Limit および X-RateLimit-Remaining レスポンスヘッダーは、すべての MCP レスポンスに含まれます。


エージェント向けの重要事項

  • カナダの住所のみです。 州・準州は2文字のコードで指定してください:AB、BC、ON、QC、MB、SK、NS、NB、NL、PE、NT、YT、NU。
  • 支払い方法: confirm_payment は、Stripe の pm_* 支払い方法 ID を受け付けます。エージェントの運用者は、Stripe で設定済みの有効な支払い方法を用意する必要があります。
  • 注文は自動的に配達業者へ送信されます。 confirm_payment が成功すると、注文は2~5分以内に UberEats または DoorDash に転送されます。get_order_status で追跡してください。
  • 配達プラットフォームは、対象のレストランがカタログに掲載されているプラットフォームに基づいて自動的に選択されます。
  • メニュー項目の source_id は内部で使用されます。直接参照する必要はありません。create_order を呼び出す際は、menu_item_id(整数の id フィールド)を使用してください。
  • モディファイアは任意です。 メニュー項目に必須のモディファイア(例:ドリンクのサイズ)がある場合、省略するとプラットフォーム側で注文が失敗することがあります。どれが必須かは modifier_groups[].min_selections で確認してください。
  • 配達日時の予約は、create_order の ISO 8601 フィールド scheduled_for で指定できます。このフィールドを省略すると、できるだけ早く配達されます。

対応している配達プラットフォーム

プラットフォーム対応エリア
UberEats全89都市
DoorDash全89都市

注文は、指定されたレストランを取り扱っているプラットフォームで行われます。各レストランの source フィールド("ubereats" または "doordash")で、使用されるプラットフォームを確認できます。


カナダの都市 — 全一覧

アルバータ州 · ブリティッシュコロンビア州 · マニトバ州 · ニューブランズウィック州 · ニューファンドランド州 · ノバスコシア州 · オンタリオ州 · プリンスエドワードアイランド州 · ケベック州 · サスカチュワン州

最新の一覧は list_cities で確認してください。主な都市は次のとおりです:

アルバータ州: カルガリー、エドモントン、レッドディア、レスブリッジ、エアドリー、メディシンハット、グランドプレーリー、フォートマクマレー
BC: バンクーバー、サレー、バーナビー、リッチモンド、ケロウナ、アボッツフォード、ビクトリア、コキットラム、ラングレー
オンタリオ州: トロント、オタワ、ハミルトン、ロンドン、ブランプトン、ミシサガ、バリー、ウィンザー、キッチナー、エイジャックス、オーロラ
ケベック州: モントリオール(一部エリア)
プレーリー地域・大西洋岸地域: サスカトゥーン、レジャイナ、ウィニペグ、ハリファックス、モンクトン、フレデリクトン


API リファレンス


サポート

  • 問題・質問: このリポジトリで GitHub の Issue を作成してください
  • API キーを紛失した場合: 別のメールアドレスで再登録するか、[email protected] にメールしてください
  • 注文に関する問題: order_id を添えて [email protected] にメールしてください
  • ウェブサイト: canuckeats.com

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。