Glovo Claude Skill
The Glovo Claude Skill enables AI-assisted food/grocery ordering workflows — from personalized suggestions and order history analysis to basket management — without checkout or payment capabilities.
Authentication & Session
Check authorization status and log in via Chrome to establish an authenticated session.
Location Management
Read/set browsing location, search for serviceable delivery addresses, and view saved delivery addresses.
Store & Product Discovery
Browse live stores by category (restaurants, groceries), retrieve store details and menus, search for products within a store, and inspect product details including required/optional modifiers.
Personalized Suggestions
Generate 3–5 live, personalized food suggestions based on past order history, supporting repeat, explore, or balanced intents, with optional display-only Google Maps quality evidence.
Order History & Analytics
Paginate through full order history, inspect past order items, compute venue statistics, and perform deep analysis of purchase frequency, cadence, customization, and spend.
Repeat Order Planning
Preview and plan reorders by resolving past order items against the current catalog (read-only, no basket changes without explicit user approval).
Basket Management (requires explicit user approval)
Read the current basket, add products with modifier selections, update item quantities, or remove items.
Key Limitations
❌ No checkout, payment processing, delivery-slot booking, or order placement.
❌ No autonomous basket mutations — explicit user approval required before any changes.
Browse live stores, inspect menus and products, validate product modifiers, read authenticated order history with cursor pagination, and prepare a real basket for Glovo.
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., "@Glovo Claude Skill show me pizza places near me"
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.
Glovo Skill and MCP
Open Claude and Codex integration for personalized live Glovo suggestions, saved delivery locations, stores, products and modifiers, authenticated order analysis, repeat planning, and real basket preparation. It has no checkout, payment, delivery-slot booking, or order-placement tool. Browser use is limited to explicit session bootstrap; every suggestion, location, catalog, history, research, repeat-plan, and basket operation uses Glovo HTTP APIs through MCP.
Install in Claude Code
Requires current Claude Code, Node.js 18 or newer, and Google Chrome only if interactive login is needed.
claude plugin marketplace add denya/glovo-skill
claude plugin install glovo@denya-glovoReload Claude Code and inspect /mcp for glovo. The explicit glovo_login tool may open a dedicated Chrome login window for session bootstrap. Once saved, normal operations use the direct API. Claude Code stores session state at ${CLAUDE_PLUGIN_DATA}/session.json with a 0700 parent directory and 0600 file.
Optional Google Maps quality evidence is configured after installation through /plugin -> Installed -> Glovo -> Configure. Leave it blank to use the complete personalized and Glovo-only path.
Related MCP server: mcp-telepizza
Install in Claude Desktop
Download Glovo v0.2.1 for Claude Desktop (.mcpb)
SHA256: 1fa8c7b5b01fb5ff53ae5dcdfa21547941415378f17bb7c17d3362b8114102c3
Download
glovo-skill-0.2.1.mcpb.Open Claude Desktop on macOS.
Go to Settings -> Extensions -> Advanced settings -> Install Extension....
Select the MCPB and approve installation.
Optionally enter a restricted Google Maps Platform key when prompted.
Ask Claude to check Glovo authorization or make a read-only suggestion.
The Desktop package uses the same bundled dist/server.mjs runtime. It stores Glovo session state in ~/.glovo/session.json, not in the bundle. To reproduce the package from source:
git clone https://github.com/denya/glovo-skill.git
cd glovo-skill
npm ci
npm run build
npm run validate:mcpb
npm run pack:mcpbInstall in Codex
Codex uses the same local stdio MCP runtime and skill instructions:
git clone https://github.com/denya/glovo-skill.git ~/.local/share/glovo-skill
cd ~/.local/share/glovo-skill
npm ci
npm run build
codex mcp add glovo \
--env GLOVO_SESSION_PATH="$HOME/.glovo/session.json" \
-- node "$PWD/dist/server.mjs"
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills/glovo"
cp skills/glovo/SKILL.md "${CODEX_HOME:-$HOME/.codex}/skills/glovo/SKILL.md"Restart Codex, then ask it to use Glovo. Optional Google enrichment can be added by registering GOOGLE_MAPS_API_KEY as another MCP environment value; do not put the key in the repository or a shared script.
What You Can Ask
"Pizza again: give me three live choices based on places I actually ordered from."
"Try a new pizza from a high-quality place, with Google evidence if configured."
"Use a favorite restaurant but suggest a different current item."
"Show why each choice was selected, the history coverage, current price, availability, and required options."
"Show my saved delivery locations and whether the current Glovo location matches one."
"Find open supermarkets near the selected location and compare delivery minimums."
"Browse a pharmacy or retail shop by category and show exact current sizes or packs without inventing variants."
"Read my full order history and separate card-level venue statistics from detail-backed product statistics."
"Resolve my previous order against the current catalog without changing the basket."
"After I approve the exact product and modifiers, prepare the basket for my review."
glovo_get_suggestions accepts repeat, explore, or balanced intent and returns 3-5 labeled live choices. It never mutates the basket. The agent must use the separate product/options tools and obtain explicit approval before any basket change.
Suggestions keep an account-scoped private order-card cache beside the session file. Every request still refreshes Glovo from offset=0 and follows exact cursors until it overlaps a known order; live stores, prices, availability, options, and all Google evidence remain uncached. Responses report cache mode, pages fetched, prior full-walk coverage, refresh time, and stale:false. Set history_refresh=full to force cursor exhaustion.
Recommendation Evidence
Venue ranking uses all completed order cards and the validation-selected 5/20/80-event multi-scale recency model. On the untouched 137-order final window it achieved Precision@5 0.083, Recall@5 0.416, and NDCG@5 0.271; the popularity baseline reached Recall@5 0.204 and NDCG@5 0.160. Selection used a contiguous 70/15/15 chronological split and the simplest model within one validation standard error.
This is holdout-supported evidence, not a claim of scientific proof. Product learning is deliberately disabled: only 15 orders had successful detail enrichment, which is insufficient for a defensible learned item model. Product choices therefore resolve against the current Glovo catalog, authenticated Easy Reorder, and Top Sellers, with required options re-fetched before presentation.
See the aggregate evaluation and reproduction protocol. Run it against the authenticated card history without writing raw orders:
npm run eval:venuesOptional Google Places
Google Places API (New) enriches only the final Glovo shortlist, normally at most five venues. Name and proximity must agree conservatively; ambiguous matches receive no Google attachment. Ratings use transparent Bayesian shrinkage with a 4.2 prior and weight 100 rather than raw averages. Google evidence is display-only and does not alter the backtested personalized rank.
Review text is fetched only when include_google_reviews=true, for at most three finalists. Responses preserve author attribution, review and Maps links, source notices, and Google's ordering caveat. The runtime does not persist ratings, reviews, or result payloads; it stores no Google data and uses an ephemeral request only.
No key is required. Without GOOGLE_MAPS_API_KEY, personalized Glovo suggestions still work and report that external quality evidence is unavailable. If enabling it:
Restrict the key to Places API (New) and the environments that run this local MCP; rotate it if exposed.
Review API security guidance, usage and billing, and current pricing. Ratings/count fields and review details can trigger higher Places SKUs; review retrieval is therefore explicit.
Preserve Google Maps attribution and source URIs under the Places policies.
Check the Google Maps Platform EEA Terms if your billing account is in the EEA; terms and permitted use can differ.
Maps Grounding Lite can be installed separately for free-form place discovery, but it is not a dependency and does not replace the direct, bounded Places enrichment used here.
Test the Local MCP
git clone https://github.com/denya/glovo-skill.git
cd glovo-skill
npm ci
npm run verify
claude --plugin-dir "$(pwd)"npm run verify uses an empty temporary session for the guest MCP smoke, never invokes login, and never opens or navigates a browser. After an explicit login, the sanitized authenticated read smoke is:
npm run test:mcp:authTools
Tool | Purpose | Auth |
| Check or explicitly bootstrap a saved session | Login only |
| Read or set local browsing-location headers | No |
| Find and select a serviceable public location | No |
| Read saved delivery locations and current-match arguments | Yes |
| Browse current restaurant, grocery, and retail stores and menus | No |
| Follow an exact same-store menu content URI, with a truthful search fallback | Yes |
| Produce personalized 3-5 current choices with optional Google evidence | Yes |
| Read Easy Reorder, Top Sellers, fees, restrictions, and alternatives | Yes / No |
| Search current products and inspect required/optional modifiers | No |
| Read cursor-correct card history and compact statistics | Yes |
| Inspect bounded detail-backed items, cadence, and coverage | Yes |
| Resolve a past order into current, reviewable candidates | Yes |
| Read the current basket | Yes |
| Mutate the real basket only after explicit approval | Yes |
Capabilities and Boundaries
All suggestion, search, location, product, history, stats, repeat-plan, and basket behavior is direct API traffic. It does not drive, tap, or scrape Chrome.
History pagination starts at
offset=0and followspagination.next.offsetexactly. It never numerically increments a cursor.Suggestions rank against a complete account-scoped order-card cache, refresh the newest cursor page on every call, and expose explicit freshness metadata. A forced full walk remains available. Product details remain a bounded, separately reported coverage layer.
Restaurant, grocery, and retail surfaces share Glovo's API family. Catalog nodes are followed only through validated same-store content URIs; nodes without product tiles return an item-search fallback. Retail size or pack variants are never synthesized when Glovo exposes them only as separate named products.
A previous purchase proves familiarity, not satisfaction.
known_liked_onlyis used only when the user explicitly supplies that preference.Exploration is separate from the backtested repeat model. Novel candidates use current Glovo availability and count-aware Glovo quality; optional Google data remains clearly labeled external evidence.
Every chosen product is re-fetched and must have
add_enabled=true. Three product identifiers, the store category, and all required/optional modifier identities are preserved for later basket review.glovo_plan_reorderis read-only. Glovo exposes an order-summary navigation token, but no safe native basket-only reorder endpoint was proven, so this project does not guess one.Basket writes are real. Snapshot first, obtain explicit approval, verify each mutation, and restore on test failure.
No checkout, payment, delivery-slot booking, or order-placement API is included.
Verify a Checkout-Free Build
npm run verifyThe gate builds the self-contained server, runs unit and contract tests, validates the Claude Code plugin and MCPB manifest, packs MCPB, runs guest MCP and isolated packaged-runtime smokes, audits dependencies, and scans for secrets and browser-boundary violations.
Reversible basket E2E remains separately dual-gated and is not run by release verification:
GLOVO_E2E_MUTATE=1 npm run live:e2e:mutateMIT licensed. Independent project; not affiliated with, endorsed by, or sponsored by Glovo or Google.
Available Tools
23 toolsglovo_add_to_basketAdd to basketB
Add a product to the real Glovo basket. Do not call unless the user explicitly asks for a real basket change.
Inputs: store_id (required), product_id (required), store_address_id (required), quantity, +5 more.
glovo_analyze_order_historyAnalyze order historyA
Walk cursor-correct history, enrich a bounded recent subset with order details, and calculate truthful product frequency, cadence, customization, and visible-spend statistics with explicit coverage.
Inputs: max_pages, detail_limit, page_delay_ms, detail_delay_ms.
glovo_auth_statusAuth statusA
Check whether a Glovo session is available and whether the access token is currently valid.
Inputs: no named parameters.
glovo_browse_storesBrowse storesA
Browse live Glovo stores for the configured location. category_id 1 = restaurants, 4 = groceries, and 3 = pharmacy/beauty retail.
Inputs: limit, offset, category_id, previous_store_ids.
glovo_get_basketGet basketA
Read the current authenticated Glovo basket. If store_id is provided, read that store basket.
Inputs: store_id.
glovo_get_locationGet locationA
Read the current Glovo browsing location headers. Does not mutate baskets.
Inputs: no named parameters.
glovo_get_order_itemsOrder itemsB
Read details/items for one past Glovo order.
Inputs: order_id (required).
glovo_get_order_statsOrder statisticsB
Walk full order-history cursor pagination and return compact card-only statistics. Detail enrichment is intentionally separate.
Inputs: max_pages, page_delay_ms.
glovo_get_productGet productB
Get product details from a store. Use product ids returned by glovo_search_store_items.
Inputs: store_id (required), product_id (required), store_address_id (required), quantity, +2 more.
glovo_get_purchase_historyPurchase historyA
Read authenticated Glovo order history. Pagination is cursor-based: start with offset 0, then pass the returned next_offset value.
Inputs: limit, offset.
glovo_get_saved_locationsGet saved delivery locationsA
Read authenticated saved Glovo delivery locations and identify the current saved-location match. Read-only; does not change location headers or baskets.
Inputs: match_text.
glovo_get_shopping_guideShopping guideA
Return the Glovo shopping playbook and safety rules. Call this before changing a basket.
Inputs: no named parameters.
glovo_get_store_order_optionsStore order optionsA
Read delivery minimums, surcharges, restrictions, public store information, and similar stores before preparing a basket. No checkout or order placement.
Inputs: store_id (required), store_address_id (required), translation, similar_limit.
glovo_get_suggestionsPersonalized live suggestionsA
Turn structured repeat, explore, or balanced food intent into 3-5 read-only live Glovo choices. Uses full card-level venue history, re-fetches current products/options, and can attach optional Google Maps quality evidence. Never changes the basket.
Inputs: query (required), mode, item_mode, max_choices, +7 more.
glovo_loginLog in to GlovoA
Open Chrome for Glovo sign-in and save the local session for order history and basket tools.
Inputs: timeout_ms.
glovo_plan_reorderPlan a repeat orderA
Resolve past order lines against authenticated Easy Reorder and current store search results. Read-only; inspect product options and obtain approval before using basket tools.
Inputs: order_id (required), max_searches, candidates_per_line.
glovo_preview_reorderPreview reorderA
Read one past order and report whether it can be safely rebuilt into a basket. This never mutates the basket or places an order.
Inputs: order_id (required).
glovo_remove_from_basketRemove from basketB
Remove one product from the real Glovo basket. Do not call unless explicitly requested.
Inputs: store_id (required), product_id, store_product_id, basket_product_id.
glovo_search_locationsSearch locationsB
Search public Glovo delivery locations by text. Returns only place id, provider, title, and subtitle.
Inputs: query (required), limit.
glovo_search_store_itemsSearch store itemsB
Search products/items inside a specific Glovo store. Use ids from glovo_browse_stores or glovo_get_store.
Inputs: query (required), store_id (required), store_address_id (required), limit.
glovo_select_locationSelect locationA
Resolve a public location suggestion, check guest delivery serviceability, and persist only valid browsing location headers.
Inputs: place_id (required), provider.
glovo_set_locationSet locationA
Set the local browsing location headers. This does not clear baskets, but changing stores may make an existing basket incompatible.
Inputs: latitude, city_code, longitude, country_code, +1 more.
glovo_set_quantitySet quantityA
Set exact product quantity in the real Glovo basket. Quantity 0 removes it. Do not call unless explicitly requested.
Inputs: quantity (required), store_id (required), product_id, store_product_id, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 23 tools
Most tools target clearly distinct resources or actions: auth, location, store browsing, order history, and basket mutation are cleanly separated. A few adjacent pairs such as get_order_stats vs analyze_order_history and preview_reorder vs plan_reorder could cause hesitation, but the descriptions explain their different outputs well enough.
Tool names consistently follow a glovo_ + verb + noun pattern, making the set predictable and easy to scan. Minor deviations include glovo_auth_status, which lacks a leading verb, and glovo_login, which uses a bare verb instead of verb_noun.
At 23 tools, the server is on the heavy side and falls into the 16-25 range that begins to feel bloated. The broad purpose of the skill justifies many operations, but some overlapping history and reorder helpers could likely be consolidated.
The set covers the main lifecycle well: location setup, store and product discovery, basket read/write/update/delete, order history, and reorder planning. Minor gaps remain, such as glovo_search_store_items referencing a glovo_get_store tool that is not exposed, and no checkout or saved-location write operations exist.
Maintenance
Related MCP Connectors
An MCP server that exposes functionalities to use Zomato's services.
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
MCP server for Product Management
Per-restaurant MCP servers: menu, hours, delivery terms; live example below
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Getir partner API (Turkey). Manage orders, products, pricing, and store status for your Getir restaurant via Bearer token authentication.86 npmMIT
- AlicenseNot gradedqualityDmaintenanceUnofficial read-only MCP server for Telepizza.es that enables querying menu, prices, offers, stores, loyalty points, and order history using your own account. It cannot make purchases.1MIT
- AlicenseAqualityDmaintenanceAn unofficial MCP server for interacting with Pyaterochka (5ka.ru) grocery store, enabling product search, cart management, and order delivery.244MIT
- AlicenseAqualityCmaintenanceUnofficial MCP server for Greenweez that enables searching the catalog, reading product details, and managing a real shopping cart with safe confirmations, without ever placing orders or handling payment.8MIT