Canuckeats — Canadian Food Delivery について
Canuckeatsは、AIエージェントがカナダの都市でメニューを閲覧し、フードデリバリーを注文するためのMCPサービスです。UberEatsとDoorDashを通じて、店舗検索、注文確認、決済確定、配達追跡に対応します。
主な機能
- 01都市、料理、名称、価格で店舗を検索
- 02メニュー、価格、オプションを閲覧
- 03決済前に注文合計を確認
- 04注文の作成と決済の確定
- 05注文状況、追跡URL、到着予定時刻を確認
活用シーン
- 01カナダの都市で店舗やメニューを探す
- 02注文前に合計金額を確認
- 03エージェント経由で料理を注文
- 04配達状況と到着予定時刻を確認
MCP 対応
Streamable HTTP経由で、店舗検索、メニュー閲覧、注文作成、決済確定、配達追跡の8つのツールを提供します。MCPクライアントはAPIキーを使ってホスト型エンドポイントに接続します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.canuckeats.com/mcpclaude mcp add --transport http canuckeats-canuckeats https://mcp.canuckeats.com/mcp{"mcpServers":{"canuckeats-canuckeats":{"type":"http","url":"https://mcp.canuckeats.com/mcp"}}}Cursor で開く{"servers":{"canuckeats-canuckeats":{"type":"http","url":"https://mcp.canuckeats.com/mcp"}}}VS Code で開く{"mcpServers":{"canuckeats-canuckeats":{"type":"http","url":"https://mcp.canuckeats.com/mcp"}}}{"mcpServers":{"canuckeats-canuckeats":{"serverUrl":"https://mcp.canuckeats.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://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 回のツール呼び出しで注文し、支払いを確定する
- 配達状況を追跡し、到着予定時刻をユーザーに伝える
すべての注文は、実際の 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_cities | API キー | レストラン数を含む 89 都市すべての一覧を取得 |
search_restaurants | API キー | 都市、料理の種類、名前、価格帯で検索 |
get_restaurant | API キー | レストランの詳細情報を取得 |
get_menu | API キー | セクション、価格、追加オプションを含むメニュー全体を取得 |
validate_order | API キー | 正確な合計金額を確認 — 料金は発生せず、注文も作成されません |
create_order | API キー | 注文と Stripe PaymentIntent を作成(まだ課金されません) |
confirm_payment | API キー | カードに課金し、プラットフォームに注文を送信 |
get_order_status | API キー | リアルタイムの状況、追跡 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 をご覧ください。
レート制限
| エンドポイント | 制限 |
|---|---|
/register | 1 つの 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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。