ifood-mcp
This server exposes an unofficial, local-first MCP interface to iFood, mostly read-only access to your account, orders, and restaurant browsing, plus fail-closed gated mutations that never run unless explicitly enabled and user-approved.
Account data: read profile, saved addresses, contact methods, payment methods (redacted by default), loyalty cards, and benefits/coupons.
Orders & cart: list past orders, get order details, see previous items at a merchant, and inspect an existing cart.
Browse & search: search restaurants/items, get home feed, categories, merchant info, reviews, filter options, and merchant payment methods.
Meta tools: check connection status, view capabilities, and run a privacy audit.
Gated cart writes: create a cart, set delivery method, set payment method — only with
IFOOD_ALLOW_MUTATIONSandexplicit_user_intent=true.Gated checkout: place an order, charges money, fail-closed, requires both mutation opt-in and explicit user intent.
Logout: clears stored tokens, also requires explicit user intent.
Responses can be markdown or JSON, with optional privacy redaction modes.
Provides tools for interacting with iFood, enabling AI agents to view customer data, addresses, payment methods, orders, and cart contents, as well as browse restaurants, search, and optionally manage the cart and perform checkout with explicit opt-in.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ifood-mcp Show my most recent iFood order"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Unofficial. Not affiliated with, endorsed by, or supported by iFood. Not the merchant-api Partners portal. The consumer web surface can change without notice.
Never pays by default.
ifood_checkoutdoes nothing unlessIFOOD_ALLOW_MUTATIONSis enabled andexplicit_user_intentis true.
WAF:
www.ifood.com.br/site-apiis Cloudflare-blocked from Node. Search/home/GraphQL may get Akamai Access Denied from datacenter IPs even when a home-browser JWT works. Those are not shipped as 401-verified routes.
Setup in 60 seconds
npx -y ifood-mcp-unofficial setup
npx -y ifood-mcp-unofficial auth start --email you@email.com
npx -y ifood-mcp-unofficial auth complete --code 123456 --email you@email.com
npx -y ifood-mcp-unofficial doctorFallback (no OTP): open ifood.com.br logged in → DevTools → Network → any marketplace.ifood.com.br request → copy Authorization, then:
npx -y ifood-mcp-unofficial auth --from-header "Bearer eyJ…"Stdio snippet. Do not set IFOOD_ALLOW_MUTATIONS here:
{
"mcpServers": {
"ifood": {
"command": "npx",
"args": ["-y", "ifood-mcp-unofficial"]
}
}
}Related MCP server: 99 MCP
Skill or MCP
Same package, two doors. MCP registers tools on stdio/HTTP. The skill is the workflow (orders/search → stop before checkout) and can drive the same tools through the CLI when the client has no MCP:
npx -y ifood-mcp-unofficial call ifood_list_orders --json '{}'Gates are identical. Copy skill/SKILL.md into your agent skills dir (~/.agents/skills/ifood/ or Claude/Grok equivalent).
Tools
Kind | Tools |
Read · me |
|
Read · orders |
|
Read · browse |
|
Meta |
|
Gated cart |
|
Gated pay |
|
Intent only |
|
HTTP (optional, loopback)
npx -y ifood-mcp-unofficial --httpBinds 127.0.0.1 and checks Origin. DNS-rebinding mitigation, not a public server.
Tests
npm testNo live iFood login required.
Available Tools
33 toolsifood_add_to_cartAdd items to iFood cartCDestructive
POST /v1/carts on cw-marketplace (401 JSON no-jwt). Item subpaths 404. Dual-gated. Does not checkout.
Inputs: items (required), merchant_id (required), address_id, response_format, +1 more.
ifood_benefitsiFood benefitsBRead-onlyIdempotent
Wallet benefits and coupons. Read-only. Does not apply a coupon.
Inputs: privacy_mode, response_format.
ifood_capabilitiesiFood capabilitiesBRead-onlyIdempotent
What this unofficial MCP can read and which writes stay gated.
Inputs: response_format.
ifood_categoriesiFood categoriesBRead-onlyIdempotent
Top-level categories near a point. Read-only.
Inputs: latitude (required), longitude (required), privacy_mode, response_format.
ifood_checkoutPlace iFood orderADestructive
FAIL-CLOSED. Charges money on wsloja checkout. Requires IFOOD_ALLOW_MUTATIONS and explicit_user_intent.
Inputs: cart_id (required), checkout_payload (required), response_format, explicit_user_intent.
ifood_connection_statusiFood connection statusCRead-onlyIdempotent
Local doctor: token present, mutations off by default, unofficial consumer surface.
Inputs: response_format.
ifood_contact_methodsiFood contact methodsBRead-onlyIdempotent
Verified emails and phones. Redacted by default.
Inputs: privacy_mode, response_format.
ifood_create_addressCreate iFood addressCDestructive
POST /v1/customers/me/addresses (401 JSON no-jwt). Requires explicit_user_intent. PUT/DELETE :id 404.
Inputs: latitude (required), longitude (required), city, number, +5 more.
ifood_create_cartCreate iFood cartADestructive
Gated write on cw-marketplace. Requires IFOOD_ALLOW_MUTATIONS and explicit_user_intent. Does not checkout.
Inputs: items (required), merchant_id (required), address_id, response_format, +1 more.
ifood_customer_meiFood profileBRead-onlyIdempotent
Authenticated customer profile. Identity redacted by default.
Inputs: privacy_mode, response_format.
ifood_filter_optionsiFood search filtersBRead-onlyIdempotent
Public filter catalog (200 without auth). Read-only.
Inputs: privacy_mode, response_format.
ifood_get_cartGet iFood cartBRead-onlyIdempotent
Inspect a cart on cw-marketplace. Read-only.
Inputs: cart_id (required), privacy_mode, response_format.
ifood_get_orderGet iFood orderBRead-onlyIdempotent
One order by id (v3). Read-only.
Inputs: order_id (required), privacy_mode, response_format.
ifood_get_order_etaiFood order ETABRead-onlyIdempotent
Dedicated /eta URL 404. Reads the live order payload. Read-only.
Inputs: order_id (required), privacy_mode, response_format.
ifood_get_order_invoiceiFood order invoiceCRead-onlyIdempotent
Dedicated /invoice /nfe URLs 404. Reads the live order payload. Read-only.
Inputs: order_id (required), privacy_mode, response_format.
ifood_get_order_receiptiFood order receiptARead-onlyIdempotent
Dedicated /receipt URL 404. Reads the live order payload. Read-only.
Inputs: order_id (required), privacy_mode, response_format.
ifood_homeiFood home feedBRead-onlyIdempotent
Localized home cards. Read-only. May WAF from datacenter IPs.
Inputs: latitude (required), longitude (required), privacy_mode, response_format.
ifood_identitiesiFood external identitiesBRead-onlyIdempotent
Allowlisted GET /v1/customers/me/external-identities. Identity redacted. Read-only.
Inputs: privacy_mode, response_format.
ifood_list_active_ordersList active iFood ordersBRead-onlyIdempotent
GET /v4/customers/me/orders?status=ONGOING (401 JSON without jwt). Read-only.
Inputs: page, size, privacy_mode, response_format.
ifood_list_addressesList iFood addressesBRead-onlyIdempotent
Saved delivery addresses. Street/phone/email redacted by default.
Inputs: privacy_mode, response_format.
ifood_list_ordersList iFood ordersCRead-onlyIdempotent
Past orders (v4). Read-only.
Inputs: page, size, privacy_mode, response_format.
ifood_list_payment_methodsList iFood payment methodsBRead-onlyIdempotent
Saved wallet methods. Last-four redacted. Does not charge.
Inputs: privacy_mode, response_format.
ifood_logoutLogout iFood MCPADestructiveIdempotent
Clears ~/.ifood-mcp/tokens.json. Requires explicit_user_intent.
Inputs: response_format, explicit_user_intent.
ifood_loyalty_cardsiFood loyaltyCRead-onlyIdempotent
Club / stamps. Read-only.
Inputs: privacy_mode, response_format.
ifood_merchant_infoiFood merchant infoARead-onlyIdempotent
Fees, hours, rating via unofficial GraphQL. Read-only. May WAF from datacenter IPs.
Inputs: merchant_id (required), privacy_mode, response_format.
ifood_merchant_payment_methodsMerchant payment methodsCRead-onlyIdempotent
How a restaurant accepts payment. Read-only.
Inputs: merchant_id (required), privacy_mode, response_format.
ifood_previous_itemsPrevious items at merchantCRead-onlyIdempotent
Items you ordered before at this merchant. Read-only.
Inputs: merchant_id (required), privacy_mode, response_format.
ifood_privacy_auditiFood privacy auditCRead-onlyIdempotent
Redaction defaults and fail-closed checkout.
Inputs: response_format.
ifood_reviewsiFood reviewsCRead-onlyIdempotent
Merchant reviews. Read-only.
Inputs: merchant_id (required), privacy_mode, response_format.
ifood_searchSearch iFoodARead-onlyIdempotent
Search restaurants/items near a point. Read-only. May WAF from datacenter IPs.
Inputs: term (required), latitude (required), longitude (required), size, +2 more.
ifood_set_delivery_methodSet iFood delivery methodCDestructive
Gated cart write. DEFAULT / PRIORITY / TAKEOUT.
Inputs: method (required), cart_id (required), response_format, explicit_user_intent.
ifood_set_payment_methodSet iFood cart paymentADestructive
Gated cart write. Does not charge.
Inputs: cart_id (required), payment_method_ids (required), response_format, explicit_user_intent.
ifood_track_orderTrack iFood orderBRead-onlyIdempotent
Dedicated /tracking URLs 404. Reads the live GET /v3/customers/me/orders/:id payload instead. Read-only.
Inputs: order_id (required), privacy_mode, response_format.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 33 tools
Most tools target distinct resources or actions, and the descriptions clarify boundaries. The order-related tools (list_orders, get_order, track_order, get_order_eta, get_order_receipt, get_order_invoice) overlap somewhat since several read the same live order payload, though each extracts a different slice.
All tools share the ifood_ prefix and snake_case, but the verb_noun pattern is inconsistent: some use action verbs (list_orders, get_order, create_cart), while many read-only tools are bare nouns (ifood_benefits, ifood_reviews, ifood_categories, ifood_merchant_info). The naming is readable but not uniform.
33 tools is substantially above the well-scoped range, and many are narrow read-only variations around orders and customer data. While iFood is a broad domain, the surface feels heavier than necessary and could be consolidated.
The server covers customer profile, addresses, orders, search, cart, and checkout well, including gated writes. However, there are notable gaps such as no cart item removal, no order cancellation, and no update/delete for addresses, which limits common lifecycle workflows.
Maintenance
Related MCP Connectors
Lets AI agents buy from physical businesses: find, order, pay, and collect in person with a QR.
Insights for your iFood store right in your AI assistant's chat. Generate charts of sales and payout
Search live store shelves, verify delivery windows, and run instant AI agent checkouts.
Connect AI to store orders, products and inventory with scoped access and human approvals.
Related MCP Servers
- AlicenseCqualityBmaintenanceLets users search nearby stores and products, inspect their Rappi cart, manage saved addresses, and track orders locally, with payment and checkout actions disabled by default unless explicitly enabled and confirmed. It uses an undocumented Rappi API and protects privacy through redaction and local token storage.4225 npmMIT
- AlicenseBqualityBmaintenanceEnables AI agents to get 99Pop and 99Moto fare estimates, ride history, and live tracking while keeping credentials local and ride requests fail-closed by default.1432 npm1MIT
- AlicenseCqualityBmaintenanceProvides AI agents with access to Zé Delivery's product catalog, search, and order tracking, with order placement and cancellation available only after explicit user consent and opt-in.2235 npmMIT
- AlicenseAqualityCmaintenanceEnables an AI assistant to browse restaurants and menus, manage a cart, reorder past orders, review checkout details, and place food delivery orders, returning a payment link to complete payment.13MIT