efood-mcp
Click on "Install 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., "@efood-mcpfind sushi restaurants near me and show their menus"
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.
efood-mcp
An unofficial Model Context Protocol server for the efood.gr consumer app API. It lets an MCP client (Claude Code, Claude Desktop, etc.) discover restaurants, browse menus, build a cart, and place orders on your behalf.
⚠️ Read the Disclaimer before using this. This talks to efood's private, undocumented app API. The account/order features are not sanctioned by efood and using them may violate efood's Terms of Service.
place_orderspends real money.
What this is (and isn't)
efood has two very different APIs:
API | Who it's for | This project? |
Partner API ( | Shops/vendors selling on efood — manage catalog, incoming orders, promotions | ❌ Not this. It has no way to browse restaurants or order as a customer. |
Consumer app API ( | The efood mobile app / website — browse and order as a customer | ✅ This. Unofficial/undocumented. |
Related MCP server: Uber Eats MCP Server
Tools
Discovery — no login required
search_restaurants— restaurants delivering to alat/lng(or geocodedaddress), with filters (open_now,query,cuisine,min_rating,has_offers,max_delivery_fee,max_minimum_order,vertical,favorites_only) andsort. When credentials are configured, results include anis_favoriteflag;favorites_only:truereturns only your favorited places that deliver to that location (favorites are location-scoped — efood has no global favorites list, so this uses the listing's server-sidefilters={"is_favorite":true}).get_restaurant_menu— full menu (categories + priced items), hours, offers, discounts. Each item carries anavailableflag (false = out of stock / "Μη διαθέσιμο"; such items fail order validation). Passavailable_only: trueto drop out-of-stock items and empty categories.get_menu_item_options— customization/variation options for an item.
All three discovery tools (and add_item) accept an optional lang (e.g. "en", "el").
efood localizes menu/option names via Accept-Language; EFOOD_LANG sets the default (en), and
lang overrides per call — set it to match the conversation so option names line up with search
terms. Codes and prices are identical across languages.
Account — requires authentication
get_addresses— your saved delivery addresses (for theaddress_idused at checkout).get_payment_methods— your saved payment methods as opaque tokens (no card numbers).get_order_history— your previous orders (most recent first) with restaurant, date, total, payment, status, and items; optionalrestaurant_idfilter for re-ordering the usual.get_order_status— status of an existing order.
Cart — efood's server-side basket (there is no local cart)
Every cart tool takes a restaurant_id and operates on that shop's persistent basket — the one shown
in the efood app. add_item/remove_item read the basket, change it, and re-persist it; no address
is needed until checkout.
add_item— add a customizable item by naming its options:item_code+options(names or codes), e.g.["traditional pita","tomato","tzatziki"]. Resolves names→codes, auto-fills required choices (bread / all-vs-choose), computes the price, rejects out-of-stock.dry_runpreviews; unknown names return the option catalog.lang= the language of the option names you pass.get_cart— read the basket: indexed line items with options, quantities, prices, and total.remove_item— remove a line by itsindex(fromget_cart); removing the last line clears it.clear_cart— delete the shop's basket entirely (removes it from the app).
Checkout — real purchase
place_order— submits the shop's basket as a real, paid order.confirm:false(default) validates against the deliveryaddress_idand returns a summary (items, total, fees, min-order);confirm:truesubmits. Cash on delivery or a saved payment token only (no card entry).
Setup
Requires Node.js 20+.
npm install
npm run buildCopy the env template and fill it in:
cp .env.example .envDiscovery tools need no configuration.
Account/cart/checkout tools need credentials in
.env:EFOOD_EMAIL+EFOOD_PASSWORD— the server logs in programmatically and caches the session.or
EFOOD_SESSION_ID— a session id you captured yourself (takes priority; see below).
How credentials are handled
Your password is read only from your local .env/environment and is sent only to efood's own
/api/v1/user/login endpoint to obtain a session id. It is never logged, printed, or sent anywhere
else. The resulting session id is cached in memory and sent as the x-core-session-id header.
If programmatic login is blocked (e.g. device verification), log in yourself in the efood app or
website, copy the x-core-session-id value from a request in your browser's dev tools (Network
tab), and set it as EFOOD_SESSION_ID.
Use with Claude Code
Use the absolute path to the built dist/index.js in this project:
claude mcp add efood -- node /absolute/path/to/efood-mcp/dist/index.jsOr add to a project .mcp.json:
{
"mcpServers": {
"efood": {
"command": "node",
"args": ["/absolute/path/to/efood-mcp/dist/index.js"]
}
}
}Quick check (no credentials needed)
Inspect the tools interactively:
npx @modelcontextprotocol/inspector node dist/index.jsThen call search_restaurants with lat=37.9838, lng=23.7275 (central Athens) — you should get a
list of restaurants. get_restaurant_menu with one of the returned ids returns its menu.
Typical flow
search_restaurants → get_restaurant_menu → add_item … → get_cart → get_addresses
→ place_order (preview, confirm:false) → place_order (confirm:true).
Disclaimer
Unofficial & undocumented.
api.e-food.gris efood's private app API. It may change or break at any time, rate-limit you, or flag/suspend your account. Use at your own risk.Most of the API has been verified live: discovery (search, menus, options), authentication, addresses, payment methods, order history, favorites, availability, and the full server-side cart flow (
add_item/get_cart/remove_item/clear_cart) including order validation. The paths not yet exercised are the final real-order submission (place_orderwithconfirm:true) and order-status lookup — their request shapes derive from an older community SDK (kpapadatos/efoodgr) and will be tested and verified in a future pass.place_orderspends real money. It cannot enter card details — pay with cash on delivery or a saved payment token. Always confirm the exact items and total first.Not affiliated with, endorsed by, or supported by efood / Delivery Hero.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA proof-of-concept server implementing the Model Context Protocol that enables LLM applications to interact with Uber Eats functionality.Last updated1
- Flicense-qualityDmaintenanceA proof-of-concept Model Context Protocol server that enables LLM applications to interact with Uber Eats, allowing AI agents to browse and order food through natural language.Last updated233
- Alicense-qualityDmaintenanceMCP server for Getir partner API (Turkey). Manage orders, products, pricing, and store status for your Getir restaurant via Bearer token authentication.Last updated15MIT
- Alicense-qualityAmaintenanceUnofficial MCP server that exposes Fitatu account operations as tools for inspecting and updating your meal plan.Last updated2MIT
Related MCP Connectors
Unofficial read-only MCP server for VeryChic hotel offers
A Model Context Protocol server for Wix AI tools
MCP (Model Context Protocol) server for Appwrite
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DENNISDGR/efood-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server