Dukkani MCP
A read-only community connector for Claude that provides access to Dukkani's public grocery directory of over 3,000 stores in Saudi Arabia. It allows users to find groceries by district or city, prepare shopping lists for WhatsApp orders, and check store availability without sending orders directly.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://dukkanlink.com/mcpWhat you can do with it
- Find groceries by district, city, or coordinates
- Prepare a grocery order link with a shopping list
- List cities covered in the directory
- Check if a nearby grocery is open
Source and maintenance
Protocol and capabilities
- Server
- dukkani 626
- MCP protocol
- 2025-06-18
- Tools
- 4 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
find_groceries — دوّر بقالة قريبة — Find nearby groceries (Saudi Arabia)
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), a map_url and open (customers' open/closed confirmations of the last 3 hours, or null), plus nearest_url: the live «nearest grocery» radar for where the user is now. 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 «عفيف»).
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City, e.g. الرياض، جدة، عفيف، بريدة (Arabic preferred)"
},
"limit": {
"type": "integer",
"default": 8,
"maximum": 15,
"minimum": 1
},
"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"
}
},
"additionalProperties": false
}{
"title": "Find nearby groceries",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}prepare_grocery_order — جهّز طلب مقاضي — Prepare a shopping-list order
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.
{
"type": "object",
"required": [
"grocery_id",
"items"
],
"properties": {
"note": {
"type": "string",
"description": "Optional note to the grocery (delivery time, «بدون سكر»…)"
},
"items": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 40,
"minItems": 1,
"description": "List lines, e.g. «2 حليب المراعي 1 لتر», «رز 5 كيلو», «كرتون بيض»"
},
"grocery_id": {
"type": "string",
"description": "The id returned by find_groceries (d:<number> or b:<code>)"
}
},
"additionalProperties": false
}{
"title": "Prepare a grocery order link",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_cities — المدن المتوفرة — Cities in the directory
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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "Cities in the directory",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}dukkani_for_shop_owners — دكّاني لصاحب البقالة — Dukkani for grocery owners
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.
{
"type": "object",
"properties": {
"topic": {
"enum": [
"overview",
"cashier",
"debts",
"orders",
"workers",
"einvoice"
],
"type": "string",
"default": "overview"
}
},
"additionalProperties": false
}{
"title": "Dukkani for grocery owners",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2156 ms
- 95th percentile latency
- 2156 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2156 ms · metadata changed · 4 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http dukkani-mcp https://dukkanlink.com/mcpCodex
codex mcp add dukkani-mcp --url https://dukkanlink.com/mcpCursor
{
"mcpServers": {
"dukkani-mcp": {
"url": "https://dukkanlink.com/mcp"
}
}
}Cline
{
"mcpServers": {
"dukkani-mcp": {
"type": "streamableHttp",
"url": "https://dukkanlink.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"dukkani-mcp": {
"type": "http",
"url": "https://dukkanlink.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http dukkani-mcp https://dukkanlink.com/mcpClaude Desktop
{
"mcpServers": {
"dukkani-mcp": {
"url": "https://dukkanlink.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"dukkani-mcp": {
"serverUrl": "https://dukkanlink.com/mcp"
}
}
}Let your agent find its tools
Find servers like Dukkani MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.