SkillAgentSearch skills...

okala-mcp

Unofficial MCP server for Okala (okala.com): find grocery stores that deliver to your address, compare product prices, fees and minimum orders across stores, browse deals, for Claude, Cursor and Copilot. اُکالا سوپرمارکت اینترنتی مقایسه قیمت

Install / Use

claude mcp add sepehr071 -- npx -y github:sepehr071/okala-mcp

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

83/100

Supported Platforms

Claude Code
Claude Desktop
Cursor
GitHub Copilot

Our assessment of okala-mcp

okala-mcp scores 83/100 on our quality scale, 3023rd of 4,582 Development & Engineering skills we index.

Its MCP Server is 21 KB long, well organised into 18 sections with 11 code examples: a thorough specification that gives an agent plenty to work with.

It has 3 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
3/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 3 days ago, so okala-mcp is actively maintained.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

okala-mcp compared with similar skills

All 4 of these similar skills score higher than okala-mcp; compare them before choosing.

SkillScoreStarsUpdatedFormat
okala-mcp (this skill)by sepehr0718333d agoMCP Server
Agent-Reachby Panniantong100102.6k1d agoCLAUDE.md
taste-skillby Leonxlnx100102.6ktodayCLAUDE.md
headroomby headroomlabs-ai10077.8k1d agoCLAUDE.md
ai-job-searchby ai-job-search-dev10065.8k5d agoCLAUDE.md

Frequently asked questions

How do I install okala-mcp?
Run claude mcp add sepehr071 -- npx -y github:sepehr071/okala-mcp. The install tabs above show the steps for each supported agent.
Which AI agents does okala-mcp work with?
It is written for Claude Code, Claude Desktop, Cursor and GitHub Copilot, as a MCP Server file. Other agents that read the same format can often use it too.
Is okala-mcp safe to use?
It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is okala-mcp still maintained?
The repository was last updated 3 days ago, so okala-mcp is actively maintained.
<!-- mcp-name: io.github.sepehr071/okala-mcp --> <div align="center">

okala-mcp: Okala MCP server for AI agents

Let your AI agent do the grocery price check on Okala (اُکالا).<br> An unofficial MCP server for Okala, an Iranian online supermarket where local supermarkets, bakeries and fruit shops deliver to your address:<br> find the stores that deliver to you, compare one product across nearby stores, check fees, minimum order and delivery slots, and catch today's deals, from Claude, Cursor or Copilot.

PyPI Python CI MCP Registry License: MIT

Install in Cursor Install in VS Code

For AI agents · Quick start · What it can do · Tools · FAQ · فارسی

</div>

Table of contents

For AI agents · Why · What it can do · Quick start · Tools · How it works · Good to know · Optional login · FAQ · Configuration · فارسی · Development · Related servers · Disclaimer · License

For AI agents

  • What: unofficial MCP server (model context protocol) for Okala (okala.com, اُکالا), an Iranian online grocery marketplace where local supermarkets, bakeries, fruit shops and chain stores deliver to an address. Queries work best in Persian; prices are in Toman.
  • Install: uvx okala-mcp or claude mcp add okala -- uvx okala-mcp. Transport: stdio. Needs uv (Python 3.10+).
  • Auth: none needed. An optional SMS login (ok_login) unlocks Okala's text search in ok_search. Env vars: OKALA_MCP_PROXY (HTTP proxy), OKALA_MCP_TOKEN (access token instead of the saved login), OKALA_MCP_TOKEN_FILE (where the login is saved).
  • Access: the 12 shopping tools only read; there is no cart, order, payment or review tool. The 4 login tools act on the user's own login: ok_login sends an SMS to the user's phone, ok_login_verify saves the login, ok_logout deletes it. Ask the user before calling ok_login or ok_logout, never log in unless the user asks, and never ask for or repeat tokens.
  • Tools: 16, all prefixed ok_. Every location tool needs lat and lon, so start with ok_locate. Typical sequence: ok_locate → ok_search → ok_compare, or ok_locate → ok_stores → ok_store_products.
  • Use when: finding which stores deliver to an address, comparing one product's price and fees across nearby stores, or checking delivery slots, minimum order and today's deals.
  • Do not use when: the user wants to order (no cart or checkout), or is outside Okala's delivery areas (Tehran and some other big cities).
  • Output: compact JSON, prices in Toman (the API's Rial divided by 10). final_price is what the buyer pays, price is before discount, discount_pct is a whole percent, ratings are 0-5. Pass lat and lon from ok_locate, and store_id from ok_stores, between tools.
  • Machine-readable: server.json, and the catalog of all Iranian MCP servers at iran-mcp (TOOLS.md, servers.json, llms.txt).

Why

On Okala every store sets its own price for the same carton of milk, and each one adds its own service and packaging fee and has its own minimum order. The site shows one store at a time, and there is no search box without logging in. An agent with okala-mcp checks every store that delivers to you in one go:

You: Where is Kalleh lactose-free milk cheapest near Yousef Abad, Tehran?

Agent: calls ok_locate(address="یوسف آباد") → ok_search(query="شیر بدون لاکتوز کاله", ...) → ok_compare(category_slug="low-fat-milk", ...)

Kalleh fat-free, lactose-free milk (1 L) is sold by 17 open stores nearby. Cheapest: یاران دریان گلریز at 147,875 Toman (12% off 169,000), 1.6 km away, first slot today 08-09, plus 10,500 service and 3,000 packaging. The dearest store asks 180,000, so you save 32,125.

<sub>Real tool output from 2026-10-07; prices change all the time. Prices are in Toman.</sub>

Every reply is a compact JSON text block, so it does not flood the agent's context.

What it can do

  • Locate an address (Persian) and list the stores that deliver there, with rating, distance, first slot and fees
  • Find products near you by name: Okala's own text search after an optional one-time login, otherwise matched to Okala's categories
  • Compare the same product across every nearby store, cheapest store first, with each store's fees
  • Browse one store: a whole department sorted by price or discount, filtered by name
  • Product details: price, discount, stock, max per order, brand, images
  • Store details: minimum order, whether it serves your address now, every delivery slot of the day, customer reviews
  • Deals: today's deal rows near you or in one store, and the biggest discounts of a store
  • No shopping writes by design: no cart, no orders, no reviews posted (the optional login is only used for search)

Example prompts:

  • "Which supermarkets near Vanak Square deliver within the hour, and what are their fees?"
  • "Cheapest Kalleh full-fat milk near me, and is that store's minimum order a problem for one carton?"
  • "What deals does store 11009 have today?"
  • "Compare the price of 1 kg of rice across stores near Sadeghiyeh, Tehran."
  • <span dir="rtl">ارزان‌ترین تن ماهی نزدیک میدان آرژانتین کدام فروشگاه است؟</span>
  • <span dir="rtl">کدام سوپرمارکت‌های اُکالا نزدیک ونک الان ارسال دارند و هزینه ارسالشان چقدر است؟</span>
  • <span dir="rtl">تخفیف‌های امروز فروشگاه‌های نزدیک یوسف‌آباد را نشان بده.</span>

Quick start

You need uv. No API key or account.

<details open> <summary><b>Claude Code</b></summary>
claude mcp add okala -- uvx okala-mcp
</details> <details> <summary><b>Claude Desktop</b></summary>

Settings → Developer → Edit Config, then add:

{
  "mcpServers": {
    "okala": { "command": "uvx", "args": ["okala-mcp"] }
  }
}
</details> <details> <summary><b>Cursor</b></summary>

Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json (or .cursor/mcp.json in a project).

</details> <details> <summary><b>VS Code (Copilot agent mode)</b></summary>

Click Install in VS Code above, or add to .vscode/mcp.json:

{
  "servers": {
    "okala": { "type": "stdio", "command": "uvx", "args": ["okala-mcp"] }
  }
}
</details> <details> <summary><b>Codex CLI</b></summary>
codex mcp add okala -- uvx okala-mcp

Or in ~/.codex/config.toml:

[mcp_servers.okala]
command = "uvx"
args = ["okala-mcp"]
</details> <details> <summary><b>Gemini CLI</b></summary>

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "okala": { "command": "uvx", "args": ["okala-mcp"] }
  }
}
</details> <details> <summary><b>Windsurf</b></summary>

Add the Claude Desktop block to ~/.codeium/windsurf/mcp_config.json.

</details> <details> <summary><b>Anything else</b></summary>

It's a standard stdio MCP server: run uvx okala-mcp, or pip install okala-mcp and run okala-mcp.

</details>

Tools

Start with ok_locate: every location tool takes lat and lon from it, and store_id comes from ok_stores.

<details open> <summary><b>Where and who delivers</b> (4)</summary>

| Tool | What it does | |---|---| | ok_locate | Address text → coordinates (candidates) plus the street address of the best hit | | ok_stores | Stores that deliver to a point: type, rating, distance, first slot, service / packaging / delivery fee | | ok_store | One store: serves this point?, minimum order, location, open delivery slots (all_slots adds full ones with availability) | | ok_store_reviews | Customer reviews of a store: stars, comment (full_text for whole), liked / disliked reasons |

</details> <details open> <summary><b>Products and prices</b> (6)</summary>

| Tool | What it does | |---|---| | ok_search | Products for a query near a point or in one store: Okala's text search when logged in, matching categories as a guest; name matches first, then cheapest | | ok_compare | The same product across nearby stores, cheapest store first, with each store's fees | | ok_store_products | A whole category of one store, sorted, filtered by name (search inside one store) | | ok_product | One product in one store: price, discount, stock, max per order, brand, images, description (full_text for whole) | | ok_categories | Category tree with slugs, near a point or in one store | | ok_brands | Brand ids and slugs (featured brands, or lookup by slug) |

</details> <details open> <summary><b>Deals</b> (2)</summary>

| Tool | What it does | |---|---| | ok_deals | Deal rows running now near a point or in one store, with end time and top products | | ok_offer | One deal row in full, across stores or in one store, sorted and paged |

</details> <details open> <summary><b>Optional login</b> (4)</summary>

| Tool | What it does | |---|---| | ok_login | Sends an SMS code to the user's phone; asks for the code in a form when the client supports it | | ok_login_verify | Finishes the login with the code the user typed in the chat | | ok_account | Logged in or guest, and as which phone (masked) | | ok_logout | Deletes the saved login; the server continues as a guest |

</details>

The 12 shopping tools and ok_account are annotated readOnlyHint: true. ok_login, ok_login_verify and ok_logout are not (they send an SMS or change the saved login), so your client asks before running them; ok_logout is also destructiveHint: true. At most 3 login codes are sent per hour.

How it works

  AI agent  (Claude, Cursor, Copilot, ...)
      │
      │  MCP over stdio
      ▼
  okala-mcp  (runs on your machine)
      │
      │  HTTPS
      └──────▶  apigateway.okala.com   the JSON API behind okala.com

okala-mcp runs locally and calls the same endpoints the okala.com website uses, as a guest unless you log in. There's no hosted server in between, no API key, and nothing about you is sent anywhere else (only the delivery point you ask about goes to Okala). Requests go out through a Chrome-impersonating client, at most 2 at a time with a little jitter; a failed GET is retried up to twice.

Good to know

  • Prices are in Toman. The API speaks Rial; every tool divides by 10. final_price is what you pay, price is before discount, discount_pct is a whole p

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars3
CategoryDevelopment
Updated3d ago
Forks0

Languages

Python

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low