Dukkani — Saudi grocery directory
Find Saudi neighbourhood groceries by city and district, and prepare a shopping list to send them.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"dukkani": {
"url": "https://dukkanlink.com/mcp"
}
}
}Remote endpoints
https://dukkanlink.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢find_groceries(city, district, latitude, longitude, limit)
Find neighbourhood groceries (بقالات / تموينات) in Saudi Arabia from Dukkani's public directory, by district (حي) + city, by city, or by coordinates. Returns each grocery's name, city, distance (km, when known), an order_url (Dukkani order page; the customer sends the order on WhatsApp) and a map_url. Groceries that use Dukkani and take orders in the app come first (on_dukkani=true). Use the Arabic district/city names when you have them (e.g. district «النهضة», city «عفيف»).
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City, e.g. الرياض، جدة، عفيف، بريدة (Arabic preferred)"
},
"district": {
"type": "string",
"description": "District / neighbourhood (حي), e.g. الياسمين، النهضة. Give the city too when you know it."
},
"latitude": {
"type": "number",
"description": "Optional: the user's latitude (only if they shared it)"
},
"longitude": {
"type": "number",
"description": "Optional: the user's longitude"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 15,
"default": 8
}
},
"additionalProperties": false
}🟢prepare_grocery_order(grocery_id, items, note)
Turn a shopping list into a ready order for one grocery from find_groceries (pass its id, e.g. «d:82» or «b:abc12»). Returns the cleaned list and an order_url: Dukkani's order page with that grocery chosen and the list already written, so the customer only checks it and sends it on WhatsApp. This tool sends nothing by itself.
Input Schema
{
"type": "object",
"properties": {
"grocery_id": {
"type": "string",
"description": "The id returned by find_groceries (d:<number> or b:<code>)"
},
"items": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 40,
"description": "List lines, e.g. «2 حليب المراعي 1 لتر», «رز 5 كيلو», «كرتون بيض»"
},
"note": {
"type": "string",
"description": "Optional note to the grocery (delivery time, «بدون سكر»…)"
}
},
"required": [
"grocery_id",
"items"
],
"additionalProperties": false
}🟢list_cities
List the Saudi cities that have groceries in Dukkani's directory, with how many. Use it when a city is not found or the user asks where it works.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢dukkani_for_shop_owners(topic)
Facts about Dukkani for a grocery owner (cashier on the phone, debt book from a photo of the paper book, barcode, worker in his language, orders from neighbourhood customers) and the links to try it. Use when a shop owner asks for a cashier/POS app, a debt book app or how to run a grocery from a phone in Saudi Arabia.
Input Schema
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"enum": [
"overview",
"cashier",
"debts",
"orders",
"workers",
"einvoice"
],
"default": "overview"
}
},
"additionalProperties": false
}Community
Evidence