mcpField
O
Okala

Okala

本地服务
github.com商业与营销46 天前更新

关于 Okala

Okala 是面向 AI Agent 的非官方只读 MCP 服务,用于查询伊朗 Okala 平台的杂货配送和价格。它可比较附近商店,但不提供购物车或结账操作。

主要功能

  1. 01查找可配送到指定地点的商店
  2. 02比较不同商店的商品价格
  3. 03查看费用和最低订单金额
  4. 04查询配送时段与商店详情
  5. 05浏览商品和当前优惠

适用场景

  1. 01比较附近商店的牛奶价格
  2. 02选择商店前查看配送费用
  3. 03查找有可用配送时段的商店
  4. 04查看当前杂货优惠

MCP 相关

通过只读购物工具向 MCP 客户端提供 Okala 的位置、商店、商品、比价和优惠信息。可选登录可启用 Okala 文本搜索;服务不支持下单或付款。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sepehr071-okala": {
"command": "uvx",
"args": [
"okala-mcp"
],
"env": {
"OKALA_MCP_PROXY": "<OKALA_MCP_PROXY>",
"OKALA_MCP_TOKEN": "<OKALA_MCP_TOKEN>"
}
}
}
}
启动命令uvx okala-mcp
需要配置的环境变量
OKALA_MCP_PROXYOptional HTTP proxy URL for requests to okala.com, or a comma-separated list used one at a time (next one after a block); system proxy settings are ignored.
OKALA_MCP_TOKEN密钥Optional Okala access token for text search; normally saved by `okala-mcp login` instead.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiokala-mcp0.3.2

工具

16

收录的工具列表 · 更新于 5 天前

参数类型必填说明
phonestring是用户的伊朗手机号码,例如 '09121234567'。

详细介绍

okala-mcp:面向 AI Agent 的 Okala MCP 服务

让你的 AI Agent 在 Okala(اُکالا)上查询杂货价格。
一个非官方的 Okala MCP 服务。Okala 是一家伊朗在线超市,当地超市、面包店和水果店会配送到你的地址:
通过 Claude、Cursor 或 Copilot 查找可配送到你所在地的商店、比较附近商店中同一件商品的价格、查看费用、最低订单金额和配送时段,以及了解今日优惠。

PyPI Python CI MCP Registry License: MIT

在 Cursor 中安装 在 VS Code 中安装

面向 AI Agent · 快速开始 · 功能介绍 · 工具 · 常见问题 · 波斯语


目录

面向 AI Agent · 为什么 · 功能介绍 · 快速开始 · 工具 · 工作原理 · 须知 · 可选登录 · 常见问题 · 配置 · 波斯语 · 开发 · 相关服务 · 免责声明 · 许可证

面向 AI Agent

  • 功能: Okala(okala.com,اُکالا)的非官方 MCP 服务(模型上下文协议)。Okala 是伊朗的在线杂货市场,当地超市、面包店、水果店和连锁店会配送到指定地址。使用波斯语查询效果最佳;价格单位为 Toman。
  • 安装: uvx okala-mcp 或 claude mcp add okala -- uvx okala-mcp。传输方式:stdio。需要 uv(Python 3.10+)。
  • 身份验证: 无需身份验证。可选的 SMS 登录(ok_login)可解锁 Okala 在 ok_search 中的文本搜索。环境变量:OKALA_MCP_PROXY(HTTP 代理)、OKALA_MCP_TOKEN(使用访问令牌代替已保存的登录信息)、OKALA_MCP_TOKEN_FILE(登录信息的保存位置)。
  • 访问权限: 12 个购物工具仅用于读取;没有购物车、下单、付款或评价工具。4 个登录工具仅操作用户自己的登录信息:ok_login 会向用户的手机发送 SMS,ok_login_verify 会保存登录信息,ok_logout 会将其删除。调用 ok_login 或 ok_logout 前请先征求用户同意;除非用户提出要求,否则绝不登录,也绝不索要或复述令牌。
  • 工具: 共 16 个,名称均以 ok_ 开头。每个位置工具都需要 lat 和 lon,因此请先调用 ok_locate。典型调用顺序:ok_locate → ok_search → ok_compare,或 ok_locate → ok_stores → ok_store_products。
  • 适用场景: 查询哪些商店可以配送到指定地址、比较附近商店中某一商品的价格和费用,或查询配送时段、最低订单金额和今日优惠。
  • 不适用场景: 用户想要下单(没有购物车或结账功能),或用户位于 Okala 的配送范围之外(德黑兰和其他部分大城市)。
  • 输出: 紧凑的 JSON,价格单位为 Toman(API 返回的 Rial 除以 10)。final_price 是买家实际支付的价格,price 是折扣前价格,discount_pct 是整数百分比,评分范围为 0-5。在不同工具之间传递 ok_locate 返回的 lat 和 lon,以及 ok_stores 返回的 store_id。
  • 机器可读: server.json,以及 iran-mcp 中伊朗所有 MCP 服务的目录(TOOLS.md、servers.json、llms.txt)。

原因

在 Okala,同一箱牛奶在每家商店的价格都不同,而且每家商店还会收取自己的服务费和包装费,并设有各自的最低订单金额。网站一次只显示一家商店,而且不登录就无法使用搜索框。使用 okala-mcp 的 Agent 可以一次性查询所有能配送到你所在位置的商店:

你: 德黑兰尤塞夫阿巴德附近,哪里卖的 Kalleh 无乳糖牛奶最便宜?

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

附近有 17 家营业中的商店在售 Kalleh 脱脂无乳糖牛奶(1 L)。最便宜的是 یاران دریان گلریز,售价 147,875 Toman(原价 169,000,折扣 12%),距离 1.6 km,今天最早的配送时段为 08-09,另加 10,500 服务费和 3,000 包装费。 最贵的商店售价为 180,000,因此你可以省下 32,125。

来自 2026-10-07 的真实工具输出;价格随时可能变化。价格单位为 Toman。

每条回复都是紧凑的 JSON 文本块,因此不会让 Agent 的上下文充斥大量内容。

功能

  • 定位一个地址(波斯语),并列出可配送到该地址的商店,以及评分、距离、最早时段和费用
  • 查找附近的商品:按名称搜索;可选择性地登录一次后使用 Okala 自带的文本搜索,否则按 Okala 的分类匹配
  • 比较附近所有商店中同一商品的价格,按价格从低到高排列,并显示每家商店的费用
  • 浏览单家商店:查看一个完整商品部门,按价格或折扣排序,并按名称筛选
  • 商品详情:价格、折扣、库存、每笔订单限购数量、品牌、图片
  • 商店详情:最低订单金额、当前是否配送到你的地址、当天的所有配送时段、客户评价
  • 优惠:查看附近商店或单家商店今日的优惠列表,以及某家商店的最大折扣
  • 按设计不支持购物操作:不能添加购物车、下单或发布评价(可选登录仅用于搜索)

示例提示词:

  • “瓦纳克广场附近哪些超市能在一小时内送达?配送费是多少?”
  • “我附近最便宜的 Kalleh 全脂牛奶在哪里?如果只买一盒,该店的最低订单金额会不会成问题?”
  • “11009 号商店今天有哪些优惠?”
  • “比较德黑兰 Sadeghiyeh 附近各商店 1 千克大米的价格。”
  • ارزان‌ترین تن ماهی نزدیک میدان آرژانتین کدام فروشگاه است؟
  • کدام سوپرمارکت‌های اُکالا نزدیک ونک الان ارسال دارند و هزینه ارسالشان چقدر است؟
  • تخفیف‌های امروز فروشگاه‌های نزدیک یوسف‌آباد را نشان بده.

快速开始

你需要 uv。无需 API 密钥或账户。

Claude Code
claude mcp add okala -- uvx okala-mcp
Claude Desktop

前往“设置”→“开发者”→“编辑配置”,然后添加:

{
  "mcpServers": {
    "okala": { "command": "uvx", "args": ["okala-mcp"] }
  }
}
Cursor

点击上方的 Install in Cursor,或将 Claude Desktop 配置块添加到 ~/.cursor/mcp.json(或项目中的 .cursor/mcp.json)。

VS Code (Copilot agent mode)

点击上方的 Install in VS Code,或添加到 .vscode/mcp.json:

{
  "servers": {
    "okala": { "type": "stdio", "command": "uvx", "args": ["okala-mcp"] }
  }
}
Codex CLI
codex mcp add okala -- uvx okala-mcp

或者在 ~/.codex/config.toml 中:

[mcp_servers.okala]
command = "uvx"
args = ["okala-mcp"]
Gemini CLI

添加到 ~/.gemini/settings.json:

{
  "mcpServers": {
    "okala": { "command": "uvx", "args": ["okala-mcp"] }
  }
}
Windsurf

将 Claude Desktop 配置块添加到 ~/.codeium/windsurf/mcp_config.json。

其他客户端

这是一个标准的 stdio MCP 服务:运行 uvx okala-mcp,或运行 pip install okala-mcp 后再运行 okala-mcp。

## 工具

从 ok_locate 开始:每个位置工具都使用它返回的 lat 和 lon,而 store_id 则来自 ok_stores。

地点和配送商家(4)
工具功能
ok_locate地址文本 → 坐标(候选项),以及最匹配结果的街道地址
ok_stores可配送到指定地点的商家:类型、评分、距离、最早时段、服务费 / 包装费 / 配送费
ok_store单个商家:是否服务此地点、最低订单金额、位置、开放的配送时段(all_slots 会添加所有时段,包括可配送时段)
ok_store_reviews商家顾客评价:星级、评论(full_text 可获取完整内容)、喜欢 / 不喜欢的原因
商品和价格(6)
工具功能
ok_search按查询内容搜索指定地点附近或某个商家的商品:登录时使用 Okala 的文本搜索,访客则匹配分类;优先显示名称匹配项,然后按价格从低到高排列
ok_compare比较附近商家的同一商品,最便宜的商家排在前面,并显示各商家的费用
ok_store_products获取某个商家的整个分类商品列表,支持排序并按名称筛选(在单个商家内搜索)
ok_product获取某个商家的单个商品信息:价格、折扣、库存、每单限购数量、品牌、图片、描述(full_text 可获取完整内容)
ok_categories分类树及其 slug,可按指定地点附近或某个商家查询
ok_brands品牌 ID 和 slug(精选品牌,或按 slug 查询)
优惠(2)
工具功能
ok_deals指定地点附近或某个商家当前有效的优惠列表,包含结束时间和主打商品
ok_offer获取完整的单个优惠,支持跨商家查询或限定某个商家,并支持排序和分页
可选登录(4)
工具功能
ok_login向用户的手机发送短信验证码;客户端支持表单时,会通过表单请求输入验证码
ok_login_verify使用用户在聊天中输入的验证码完成登录
ok_account显示已登录或访客状态,以及登录所用的手机号(已隐藏部分数字)
ok_logout删除已保存的登录信息;服务会继续以访客身份运行

12 个购物工具和 ok_account 均标注为 readOnlyHint: true。ok_login、ok_login_verify 和 ok_logout 则不是(它们会发送短信或更改已保存的登录信息),因此客户端会在运行前征求你的同意;ok_logout 还标注为 destructiveHint: true。每小时最多发送 3 个登录验证码。

工作原理

  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 在本地运行,并调用 okala.com 网站使用的相同端点;除非你登录,否则会以访客身份访问。 中间没有托管服务,不需要 API 密钥,也不会将你的任何信息发送到其他地方 (只有你查询的配送地点会发送给 Okala)。请求通过模拟 Chrome 的客户端发送,每次最多 2 个请求,并加入少量随机延迟;失败的 GET 请求最多重试 2 次。

需要了解

  • 价格以 Toman 计价。 API 使用 Rial;每个工具都会除以 10。final_price 是实付价格,price 是折扣前价格,discount_pct 是整数百分比。
  • 每家商店的价格都不同。 同一商品在每家商店的产品 ID 都相同,因此 ok_compare 可以将它们并列比较。
  • 单家商店的订单费用 = 商品 + 服务费 + 包装费 + 配送费(ok_stores),且购物篮金额必须达到该商店的 minimum_order(ok_store)。一个购物篮只能对应一家商店。
  • 文本搜索需要登录。 Okala 仅为已登录用户提供搜索。登录一次(见可选登录),ok_search 就会使用 Okala 的真实搜索功能,可搜索你附近的商品,也可在一家商店内搜索(store_id),包括品牌和商品名称(نوتلا)。作为访客,ok_search 会将你的搜索词匹配到类别名称(شیر → 牛奶),并按商品名称排序;若要在一家商店内搜索,可使用 ok_store_products 搭配 name_contains 来读取整个部门的商品。
  • 跨店列表每家商店最多返回 12 件商品;使用更具体的类别 slug 或品牌 ID,可进行更精确的比较。
  • 波斯语效果最佳(شیر کم چرب、پنیر、تن ماهی)。阿拉伯字母 ي / ك 和半空格都会标准化处理。
  • ok_search 和 ok_compare 会排除已关闭的商店;使用 open_only: false 的 ok_stores 也会显示当前已关闭的商店。
  • 时间: 配送时段和日期使用德黑兰当地时间;优惠结束时间为 UTC。
  • 代金券标记: 商品上的 kalabarg 标记表示可以使用政府代金券支付。
  • 品牌: 公开列出的仅有一小部分精选品牌;ok_brands 可以按 slug 查找其他品牌。
  • 不支持的功能: 不支持购物车、结账、订单、付款、购物清单、发布评价或提交支持工单,也没有默认位置(始终传入 lat 和 lon)。Okala 可能会随时更改其 API,因此请合理控制请求频率。

可选登录

访客也能使用所有功能。登录仅会解锁 ok_search 中 Okala 的文本搜索(品牌和商品名称,也支持在一家商店内搜索)。只需让你的 Agent:

你: 帮我登录 Okala,我的号码是 0912 123 4567

Agent: 调用 ok_login → Okala 会发送短信 → 你输入验证码(如果你的客户端显示了表单,就在表单中输入;否则在聊天中输入)→ 登录成功

  • 仅在你提出请求时才会发送验证码;同一号码每 2 分钟最多发送一次。
  • 如果你的客户端支持 MCP 表单(elicitation),验证码会直接发送到服务端,不会经过模型。
  • 登录信息保存在你的设备上(~/.okala-mcp/token.json),会自动刷新,仅发送到 apigateway.okala.com,并且绝不会出现在工具回复中。如果登录失效,服务会继续以访客身份运行。
  • ok_account 会显示登录状态;ok_logout 会删除登录信息。

更喜欢使用终端?同样可以通过命令行登录:

uvx okala-mcp login 09121234567          # sends the code
uvx okala-mcp login 09121234567 12345    # saves the login
uvx okala-mcp logout                     # deletes it

通过命令行登录后,请重启 MCP 客户端(运行中的服务只会读取一次登录信息)。

常见问题

它能帮我下单吗?

不能,这是有意为之。即使已登录,它也绝不会访问购物车、订单、付款、地址或评价接口。 Agent 会帮你找到最佳选择;你可以在 okala.com 上购买。

Okala 是否为 AI Agent 提供 API 或 MCP 服务?

Okala 没有发布面向 Agent 的官方 API。okala-mcp 是非官方 MCP 服务,将 okala.com 的接口封装为 16 个工具(12 个只读购物工具和 4 个登录工具)。

如何在 Claude、Cursor 或 Copilot 中使用 Okala?

只需安装一次服务(参见快速开始),然后用波斯语或英语输入日常语言,并提供地址或区域,以便查找能配送到该处的门店。在 Claude Code 中,安装命令为 claude mcp add okala -- uvx okala-mcp。

它是官方、安全且免费的吗?

它是非官方且免费的(MIT)。购物工具为只读工具,无需账户或 API 密钥。它在你的机器上运行,中间没有托管服务;可选登录信息也只保存在你的机器上。

为什么 ok_search 会显示与我输入的词不匹配的商品?

作为访客(mode: "category"),无法使用 Okala 的文本搜索,因此 ok_search 会获取名称与输入词匹配的类别,并优先显示名称包含这些词的商品。登录一次即可使用真正的文本搜索。回复中的 categories 会显示实际使用的类别;你可以向 ok_compare 传入更合适的 slug,或使用 ok_store_products 搜索某家门店的商品分类。

提示没有门店配送到我的位置

Okala 服务范围覆盖德黑兰和其他一些大城市。使用 ok_locate 检查坐标(第一个候选地点可能是其他区域的同名地点),然后重试;使用 open_only: false 调用 ok_stores,也能查看当前已关闭的门店。

我看到“无法连接到 okala.com”

服务会针对连接中断或限流响应重试两次。如果仍然失败,请检查网络连接。系统代理变量会被有意忽略;如需使用代理,请设置 OKALA_MCP_PROXY。如果 Okala 显示机器人验证页面,请安装浏览器扩展(运行 pip install "okala-mcp[browser]",然后运行 patchright install chromium),服务便会在无头浏览器中自动完成验证。

我的电话号码或登录信息安全吗?

登录是可选的。令牌保存在你的机器上,只会发送到 apigateway.okala.com,绝不会出现在工具回复中。对于支持 MCP 表单的客户端,短信验证码会直接发送到服务,不会经过模型。

如何调试 Agent 看到的内容?
npx @modelcontextprotocol/inspector uvx okala-mcp

配置

变量默认值含义
OKALA_MCP_PROXYunsetokala.com 请求使用的可选 HTTP 代理 URL,例如 http://user:pass@host:port;以逗号分隔的列表会逐个使用(被拦截后使用下一个);系统代理设置会被忽略
OKALA_MCP_TOKEN_FILE~/.okala-mcp/token.jsonokala-mcp login 保存登录信息的位置
OKALA_MCP_TOKENunset用于替代已保存登录信息的 Okala 访问令牌(不会刷新)

波斯语:Okala MCP 服务

okala-mcp 是一款非官方 MCP 服务,适用于伊朗在线超市 Okala(okala.com),可让您的 AI 助手(Claude、Cursor、Copilot 等)查找可配送到您所在地址的 Okala 门店、比较附近所有门店中某件商品的价格、查看服务费和包装费、最低订单金额及配送时段,并找到今日优惠。适用于在线购买食品杂货、比较超市价格,以及查找您附近最便宜的门店。

  • 不支持购买或下单:不会创建购物车、提交订单或发送评论。短信登录为可选项,仅用于启用 Okala 的文本搜索。
  • 价格以托曼计。
  • 在您自己的系统上运行,不会向任何中间服务器发送数据。

在 Claude Code 中安装:

claude mcp add okala -- uvx okala-mcp

然后询问:“德黑兰约瑟夫阿巴德附近,哪家门店有最便宜的 Mihan 低脂牛奶?”

搜索时只需用波斯语输入商品名称和社区或地址,例如“阿根廷广场附近的金枪鱼罐头”。

开发

git clone https://github.com/sepehr071/okala-mcp && cd okala-mcp
uv sync
uv run pytest            # offline, against recorded responses
uv run pytest -m live    # real okala.com
uv run ruff check .

工具位于 src/okala_mcp/stores.py、catalog.py、offers.py 和 account.py 中;每个工具都是一个带类型标注的异步函数,并附有说明何时使用该工具的文档字符串。欢迎提交问题和 PR,尤其是新工具和针对网站变更的修复。

发布版本:更新 pyproject.toml 和 server.json 中的版本号,然后推送一个 v* 标签。GitHub Actions 会运行测试、发布到 PyPI 和 MCP Registry,并创建 GitHub Release。

相关服务

  • iran-mcp:伊朗各类服务的 MCP 服务目录
  • snapp-mcp:提供 Snappfood 和 SnappMarket 的餐饮及食品杂货价格
  • tapsifood-mcp:提供 Tapsi Food 的餐厅和外卖服务
  • digikala-mcp:提供 Digikala 的商品搜索和价格信息
  • torob-mcp:比较 Torob 上伊朗商店的价格

如果它为您省去了几次点击,点个星标就能帮助其他人发现它。

免责声明

本项目为非官方项目,与 Okala 无关,也未获其认可。它使用 okala.com 网站的接口,这些接口可能随时更改,恕不另行通知。请合理控制请求频率。

作者

Sepehr Radmard:面向伊朗网络的开源 MCP 服务。LinkedIn:linkedin.com/in/sepehr-radmard

由 Sepehr Radmard(سپهر رادمرد)构建并维护。可通过 LinkedIn 联系,或在 GitHub 上关注 @sepehr071,获取更多面向伊朗网站的 MCP 服务;所有服务均列于 iran-mcp。如果它为您节省了时间,在仓库中点个星标就能帮助其他人发现它。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。