Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
AI food ordering across Canada — 17,000+ restaurants, 89 cities, real UberEats + DoorDash.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
AuthorizationValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Run this in your terminal
claude mcp add --transport http canuckeats https://mcp.canuckeats.com/mcp --header 'Authorization: your-value'Fill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"canuckeats": {
"url": "https://mcp.canuckeats.com/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"canuckeats": {
"type": "http",
"url": "https://mcp.canuckeats.com/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
Authorization secret required HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account canuckeats, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: Authorization
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 6 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, Tools MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
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.
Web production tools for AI agents: contrast, JP text, WebP, JSON-LD, slugs, dates and 40+ more
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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