关于 Okala
Okala 是面向 AI Agent 的非官方只读 MCP 服务,用于查询伊朗 Okala 平台的杂货配送和价格。它可比较附近商店,但不提供购物车或结账操作。
主要功能
- 01查找可配送到指定地点的商店
- 02比较不同商店的商品价格
- 03查看费用和最低订单金额
- 04查询配送时段与商店详情
- 05浏览商品和当前优惠
适用场景
- 01比较附近商店的牛奶价格
- 02选择商店前查看配送费用
- 03查找有可用配送时段的商店
- 04查看当前杂货优惠
MCP 相关
通过只读购物工具向 MCP 客户端提供 Okala 的位置、商店、商品、比价和优惠信息。可选登录可启用 Okala 文本搜索;服务不支持下单或付款。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx okala-mcpOKALA_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
16收录的工具列表 · 更新于 5 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| phone | string | 是 | 用户的伊朗手机号码,例如 '09121234567'。 |
详细介绍
okala-mcp:面向 AI Agent 的 Okala MCP 服务
让你的 AI Agent 在 Okala(اُکالا)上查询杂货价格。
一个非官方的 Okala MCP 服务。Okala 是一家伊朗在线超市,当地超市、面包店和水果店会配送到你的地址:
通过 Claude、Cursor 或 Copilot 查找可配送到你所在地的商店、比较附近商店中同一件商品的价格、查看费用、最低订单金额和配送时段,以及了解今日优惠。
目录
面向 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_PROXY | unset | okala.com 请求使用的可选 HTTP 代理 URL,例如 http://user:pass@host:port;以逗号分隔的列表会逐个使用(被拦截后使用下一个);系统代理设置会被忽略 |
OKALA_MCP_TOKEN_FILE | ~/.okala-mcp/token.json | okala-mcp login 保存登录信息的位置 |
OKALA_MCP_TOKEN | unset | 用于替代已保存登录信息的 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(سپهر رادمرد)构建并维护。可通过 LinkedIn 联系,或在 GitHub 上关注 @sepehr071,获取更多面向伊朗网站的 MCP 服务;所有服务均列于 iran-mcp。如果它为您节省了时间,在仓库中点个星标就能帮助其他人发现它。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
