Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
AI food ordering across Canada — 17,000+ restaurants, 89 cities, real UberEats + DoorDash.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
Authorization「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
ターミナルでこれを実行します
claude mcp add --transport http canuckeats https://mcp.canuckeats.com/mcp --header 'Authorization: your-value'動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"canuckeats": {
"url": "https://mcp.canuckeats.com/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"canuckeats": {
"type": "http",
"url": "https://mcp.canuckeats.com/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
Authorization 秘密 必須 HTTP headerこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント canuckeats で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:Authorization
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.0)がレジストリに届いたのは6 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, zanadir
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Find what a repository's CI is missing, and which security checks cannot fail the build.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Order UberEats and DoorDash in Canada through AI agents. Canuckeats is a Model Context Protocol (MCP) service that lets AI agents browse menus and place real food delivery orders across 89 Canadian cities — no human in the loop required.
Endpoint:
https://mcp.canuckeats.com/mcp
Registration:
POST https://mcp.canuckeats.com/register— free, instant, no email confirmation
Protocol: MCP 2024-11-05 — Streamable HTTP
Coverage: 17,000+ restaurants · 89 cities · Canada only · UberEats + DoorDash
Canadian residents who want AI assistants to handle their food delivery face a gap: UberEats and DoorDash don't offer agent-accessible APIs. Canuckeats bridges that gap. An agent given a task like *"order me sushi for dinner"* can:
Every order dispatches through real UberEats or DoorDash accounts — the same food, same drivers, same cities.
No waiting, no approval queue. Register your agent and start making calls in under 30 seconds:
POST https://mcp.canuckeats.com/register
Content-Type: application/json
{ "agent_name": "MyFoodAgent", "email": "you@yourproject.com", "description": "AI assistant that orders lunch for remote teams" }
Response:
{
"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." }
The key is shown once. Save it immediately. If you lose it, register again with the same email — duplicate email is rejected, so use a unique email per key.
Registration limits: Up to 5 registrations per IP per 24 hours. One key per email address. Disposable email addresses are not accepted.
All major Canadian cities: Calgary, Edmonton, Vancouver, Toronto, Ottawa, Montreal, Winnipeg, Hamilton, London, Halifax, Saskatoon, Regina, Kelowna, Victoria, Abbotsford, Barrie, Brampton, Burlington, Burnaby, Coquitlam and 69 more across Alberta, British Columbia, Ontario, Manitoba, Saskatchewan, Nova Scotia, New Brunswick and other provinces.
Use list_cities to get the current full list with restaurant counts.
| Tool | Auth | Description |
|---|---|---|
list_cities | API key | List all 89 cities with restaurant counts |
search_restaurants | API key | Search by city, cuisine, name, or price range |
get_restaurant | API key | Full restaurant details |
get_menu | API key | Complete menu with sections, prices, and modifier options |
validate_order | API key | Preview exact total — no charge, no order created |
create_order | API key | Create order + Stripe PaymentIntent (no charge yet) |
confirm_payment | API key | Charge card and dispatch order to platform |
get_order_status | API key | Live status, tracking URL, and ETA |
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()
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())
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)
Add to your Claude Desktop MCP config (claude_desktop_config.json):
{
"mcpServers": { "canuckeats": { "type": "streamable-http", "url": "https://mcp.canuckeats.com/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }
Then ask Claude: *"Order me a pepperoni pizza from anywhere in Calgary to 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
See docs/examples/order-flow.md for a narrated walkthrough with real request/response examples.
| Endpoint | Limit |
|---|---|
/register | 5 registrations per IP per 24 hours |
| All tools (general) | 60 requests / minute per key |
create_order, confirm_payment | 10 requests / minute per key |
Response headers X-RateLimit-Limit and X-RateLimit-Remaining are included on every MCP response.
AB, BC, ON, QC, MB, SK, NS, NB, NL, PE, NT, YT, NU.confirm_payment accepts a Stripe pm_* payment method ID. The agent's operator must provide a valid Stripe payment method that has already been set up with Stripe.confirm_payment succeeds, orders are forwarded to UberEats or DoorDash within 2–5 minutes. Use get_order_status to track.menu_item_id (the integer id field) when calling create_order.modifier_groups[].min_selections to know which are required.scheduled_for ISO 8601 field on create_order. Use ASAP delivery by omitting this field.| Platform | Coverage |
|---|---|
| UberEats | All 89 cities |
| DoorDash | All 89 cities |
Orders are placed on whichever platform has the requested restaurant. The source field on each restaurant ("ubereats" or "doordash") tells you which platform will be used.
Alberta · British Columbia · Manitoba · New Brunswick · Newfoundland · Nova Scotia · Ontario · Prince Edward Island · Quebec · Saskatchewan
Use list_cities for the live list. Notable cities include:
Alberta: Calgary, Edmonton, Red Deer, Lethbridge, Airdrie, Medicine Hat, Grande Prairie, Fort McMurray BC: Vancouver, Surrey, Burnaby, Richmond, Kelowna, Abbotsford, Victoria, Coquitlam, Langley Ontario: Toronto, Ottawa, Hamilton, London, Brampton, Mississauga, Barrie, Windsor, Kitchener, Ajax, Aurora Quebec: Montreal (selected areas) Prairie & Atlantic: Saskatoon, Regina, Winnipeg, Halifax, Moncton, Fredericton
order_id