关于 Divar
Divar 是面向 Agent 的只读 MCP 服务,用于搜索伊朗分类广告平台 Divar。它支持比较广告、估算价格和地图浏览,涵盖住房、汽车、工作等类别。
主要功能
- 01按城市、类别和条件搜索广告
- 02比较广告并筛选预算选项
- 03依据市场统计估算价格
- 04在地图上浏览附近广告
- 05监控搜索并导出结果
适用场景
- 01比较伊朗城市中的租房广告
- 02判断二手车标价是否合理
- 03查找符合已保存搜索的新广告
MCP 相关
它向 MCP 客户端提供 Divar 搜索、广告、卖家、地图和价格分析工具,以及资源和提示词。服务通过 stdio 通信,并执行只读查询。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx divar-mcpDIVAR_MCP_PROXYOptional HTTP proxy URL for requests to divar.ir, or a comma-separated list: one is used until it gets blocked or fails to connect, then the next. System proxy settings are ignored.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
divar-mcp:面向 AI Agent 的 Divar MCP 服务
让你的 AI Agent 在伊朗任意城市搜索 Divar(دیوار)上的广告,并判断价格是否合理。
一个非官方、只读的 MCP 服务,适用于 Divar——伊朗最大的分类信息网站(房屋、汽车、手机、工作、服务)。
通过 Claude、Cursor 或 Copilot 搜索、查看广告、比较价格、查找最便宜和性价比最高的广告、评估价格并浏览地图。价格单位为 Toman。
面向 AI Agent · 原因 · 功能 · 快速开始 · 工具 · 工作原理 · 须知 · 常见问题 · 配置 · فارسی · 开发
面向 AI Agent
- 是什么: 面向 Divar(دیوار,divar.ir)的非官方 MCP 服务(模型上下文协议)。使用波斯语查询效果最佳;阿拉伯字母变体(ي/ك)会统一处理。
- 安装:
uvx divar-mcp或claude mcp add divar -- uvx divar-mcp。传输方式:stdio。需要 uv(Python 3.10+)。 - 身份验证: 无需 API 密钥或账户。可选配置
DIVAR_MCP_PROXY(HTTP 代理 URL 或逗号分隔的列表);系统代理设置会被忽略。 - 访问权限: 对 Divar 仅有只读权限。它无法登录、发布广告、聊天、收藏广告或查看卖家的电话号码,因此调用工具前无需确认。只有
dv_watch和dv_price_trend会写入数据,且仅写入你自己的搜索记录所在的本地文件。 - 工具: 共 31 个,名称均以
dv_开头。建议从dv_search、dv_post、dv_cheapest、dv_best_for_budget、dv_market开始。 - 典型流程:
dv_cities/dv_categories->dv_filters->dv_search->dv_post->dv_similar/dv_appraise/dv_compare。 - 此外: 资源
divar://cities、divar://categories、divar://category-filters/{slug};提示词compare_ads、best_under_budget、appraise_listing、watch_market。 - 单位: 价格单位为 Toman(Divar 自身使用的单位,不进行换算)。出售房源使用
price;出租房源使用deposit+rent(当full_deposit为 رهن کامل 时,rent为 0);没有价格表示可议价。 - 适用场景: 用户想查找、核对价格或监控 Divar 上的广告(待售或出租的公寓、二手车、手机、家具、工作等),或询问某个城市的物品价格。
- 不适用场景: 用户想发布广告、联系卖家或获取电话号码(这些操作在 Divar 上需要登录),或需要查询 Divar 以外的市场。
- 输出: 紧凑的 JSON 广告卡片。在工具间传递
token,并将next_cursor作为cursor传回。 - 机器可读信息:
server.json和 iran-mcp 目录(TOOLS.md、servers.json、llms.txt)。
为什么选择它
Divar 是伊朗人买卖公寓、汽车和手机的平台,但要回答“瓦纳克一套两居室公寓的合理价格是多少?”,就得翻看几十条广告,还要排除虚假价格。使用 divar-mcp,Agent 会获取广告、剔除占位价格、计算标价的中位数和四分位数,并告诉你哪些广告的价格远低于这些数值。
你: 找一套瓦纳克最划算的两居室出租公寓,押金低于 10 亿 Toman。
Agent: 调用
dv_parse_query->dv_best_for_budget->dv_post它会根据符合条件的广告中位数,列出性价比最高的广告并说明每项评分的原因,然后打开你选中的广告。
功能
- 搜索:按类别、文本、街区、价格(租房还可按押金)、品牌和型号、照片、新鲜度以及类别中的其他筛选条件,在一个或多个城市搜索广告;合并多个页面并去除重复项;使用游标继续浏览
- 读取完整广告: 价格(单位为 Toman)、规格、功能、描述、所有图片、地图位置、卖家类型、占位价格检测
- 寻找划算选择: 最便宜的广告(跳过垃圾价格)、性价比最高和预算内最多的广告、价格远低于中位数的广告、仅显示差异的并排比较、类似广告
- 判断价格: 提供百分位数和置信度的合理价格评估,按区域和日期统计市场数据
- 监控: 使用上次的时间戳轮询
dv_new_since,只查看新广告;在本地保存搜索条件和每日中位数价格趋势;将结果导出为 CSV 或 JSON 行 - 使用地图: 查找 GPS 点或地标周边的广告并显示距离;查询街区、相邻街区、边界和某个点的地址
- 查看卖家和经销商: 查看卖家的广告数量、名片及其广告
示例提示词:
- “找出德黑兰最便宜的二手 Peugeot 206,并判断与类似广告相比价格是否合理。”
- “找出瓦纳克附近 80 亿 Toman 以下的出租公寓,并比较排名前三的广告。”
- “显示今天早上以来马什哈德发布的 iPhone 15 新广告。”
- “吉沙待售公寓的每平方米中位价是多少?”
- ارزانترین آپارتمان ۲ خوابه اجارهای در ونک با ودیعه زیر ۱ میلیارد کدام است؟
- قیمت این ماشین نسبت به آگهیهای مشابه گران است یا ارزان؟
- آگهیهای جدید گوشی آیفون ۱۵ در مشهد را از امروز صبح نشان بده.
快速开始
你需要安装 uv。无需 API 密钥或账号。
Claude Code
claude mcp add divar -- uvx divar-mcp
Claude Desktop
设置 → 开发者 → 编辑配置,然后添加:
{
"mcpServers": {
"divar": { "command": "uvx", "args": ["divar-mcp"] }
}
}
Cursor
将上方的 Claude Desktop 配置块添加到 ~/.cursor/mcp.json(或项目中的 .cursor/mcp.json)。
VS Code(Copilot Agent 模式)
点击上方的 在 VS Code 中安装,或添加到 .vscode/mcp.json:
{
"servers": {
"divar": { "type": "stdio", "command": "uvx", "args": ["divar-mcp"] }
}
}
Codex CLI
codex mcp add divar -- uvx divar-mcp
或者添加到 ~/.codex/config.toml:
[mcp_servers.divar]
command = "uvx"
args = ["divar-mcp"]
Gemini CLI
添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"divar": { "command": "uvx", "args": ["divar-mcp"] }
}
}
Windsurf
将 Claude Desktop 配置块添加到 ~/.codeium/windsurf/mcp_config.json。
其他客户端
这是一个标准的 stdio MCP 服务:运行 uvx divar-mcp,或执行 pip install divar-mcp 后运行 divar-mcp。
一张广告卡片包含 token、title、price(售价)或 deposit + rent(当 rent 为 0 且有 full_deposit 时表示 رهن کامل)、info(里程、状况等)、district、seller(中介标签)、age_h(距上次刷新已过的小时数)、photos、image(缩略图 URL,仅来自带有 thumbnails 的 dv_search)、chat、tag(付费推广)、url,以及价格看起来像占位值时的 suspect_price。未出现的标志表示为 false。默认每页显示 10 到 20 条广告。
除 dv_watch 和 dv_price_trend 仅写入本地文件外,所有工具名称均以 dv_ 开头,并标注为只读。
查找地点和类别
| 工具 | 功能 |
|---|---|
dv_cities | 按名称查找城市 ID(1,177 个城市);不提供查询时列出最大的城市 |
dv_districts | 获取城市的街区及其 ID、中心位置和主干道 |
dv_neighbours | 获取与某个街区相邻的街区(Divar 列出的街区以及距离最近的街区) |
dv_locate | 获取 GPS 点所在的城市、街区和街道地址 |
dv_place_search | 地图自动补全:将地标或街道转换为坐标 |
dv_place_mapping | 将旧版 Divar 地点 ID 转换为当前 ID |
dv_categories | 包含 236 个节点的类别树;按名称搜索、列出子类别 |
dv_filters | 获取某个类别的所有筛选条件:键、类型、标签、单位、选项 |
dv_filter_options | 品牌和型号键(161 个汽车品牌)、街区及其他选项列表,支持类型化搜索 |
dv_suggest | 获取搜索框建议,以及对部分文本的类别推测 |
dv_parse_query | 将普通波斯语请求(“آپارتمان اجاره ونک زیر ۸ میلیارد”)转换为 dv_search 参数:城市、街区、价格范围、面积(80 متری)、类别 |
dv_boundary | 获取城市的街区边界(GeoJSON):城市范围框,或单个街区的多边形 |
搜索和价格
| 工具 | 功能 |
|---|---|
dv_search | 按城市、类别、文本、街区、价格、品牌、照片、新鲜度和任意类别筛选条件搜索广告;支持合并多页结果、客户端年龄和关键词筛选、游标分页 |
dv_count | 统计符合搜索条件的广告数量(上限为 10,000) |
dv_cheapest | 查找搜索结果中价格最低的广告;跳过占位价格和远低于中位数的异常值 |
dv_best_for_budget | 在预算范围内查找性价比最高的选项,并根据符合条件的广告中位数计算可解释的 deal_score(及 reasons);对于待售房产,按每平方米价格计算;同时显示预算能买到的最高配置;跳过诱饵、合作和贷款标题 |
dv_find_deals | 查找价格远低于搜索结果中位数的广告;无需设置预算;剔除无效价格和诱饵标题 |
dv_market | 获取价格统计数据(最小值、四分位数、中位数、最大值),以及按街区和日期划分的明细 |
dv_appraise | 判断广告价格(或你提供的价格)相对于类似广告是偏高还是偏低:百分位、判断结果(样本过少且调用结果极端时为“可比样本不足”)、置信度 |
dv_new_since | 获取某个时间戳之后发布的广告;使用返回的 latest 轮询,以持续关注搜索结果 |
dv_export | 将搜索结果中的广告导出为 CSV 或 JSON Lines |
dv_nearby | 获取某个点周围的地图广告(必须指定类别),按距离从近到远排列,并显示坐标、距离和总价 |
dv_watch | 保存的搜索:创建后进行检查,仅获取自上次检查以来更新的广告(本地文件) |
dv_price_trend | 获取某个搜索条件每天的一个挂牌中位价,在本地保存,并显示与前一天相比的变化 |
dv_status | 检查 Divar 是否可访问、延迟、缓存、已保存的关注项和工具列表 |
一条广告及其卖家
| 工具 | 功能 |
|---|---|
dv_post | 完整广告信息:价格、规格、特点、描述、图片、地图位置、卖家类型、标记 |
dv_posts | 一次调用获取最多 10 条广告,信息精简 |
dv_compare | 并排比较 2 到 6 条广告:价格以及有差异的规格 |
dv_similar | 类似广告(品牌和地区相同,逐步扩大范围) |
dv_seller | 卖家的个人和商业广告数量、名片(或“个人卖家”)以及其他广告 |
dv_dealer | 商家的公开页面:名称、加入时间、前 11 条广告 |
工作原理
AI agent (Claude, Cursor, Copilot, ...)
│
│ MCP over stdio
▼
divar-mcp (runs on your machine)
│
│ HTTPS
└──────▶ api.divar.ir ads, categories, places, map
divar-mcp 在本地运行,并调用 divar.ir Web 应用使用的同一 JSON 网关。它不经过中间托管服务,也不需要 API 密钥。它发送的每个 POST 都是只读查询。请求通过模拟 Chrome 的客户端发出(TLS/HTTP2 指纹和请求头),同时最多发送 2 个请求,并加入短暂的随机延迟;失败的调用最多重试两次。Divar 的列表响应是 widget JSON;服务会将其转换为精简的广告卡片,并根据获取到的要价计算排名和统计数据。
须知
- 价格单位为 Toman。 Divar 上的价格本来就是 Toman,不会进行转换。缺少价格表示可议价(توافقی),绝不表示 0。租赁房源包含
deposit(ودیعه)和rent(اجاره);rent为 0 且带有full_deposit时,表示 رهن کامل。 - 要价。 所有价格都是卖家填写的,并非最终成交价。有些卖家会填写无效价格(如 1,111,111,或把押金填成汽车价格):
suspect_price会标记此类占位价格;排名和统计会跳过这些价格,以及低于中位数十分之一的价格。 - 省级范围。
city: "استان مشهد"(或province:مشهد)会搜索该城市所在的整个省份;搜索区域和边界时必须指定城市。 - 排序。 Divar 的 API 仅按最新时间返回结果;最前面的 1-3 条可能是付费推广,日期较早。
dv_search的sort和价格工具只会对本次调用获取的广告排序,而非整个市场的广告。分页使用时间游标(next_cursor->cursor)。 - 时效性。
age_h表示距上次刷新(نردبان)的时间,而非距发布时间的时间;只有广告页面才显示实际发布时间。 - 筛选条件。
dv_filters会列出某个类别的筛选键;类别不支持的筛选条件会列在ignored中,不会被静默丢弃。Web URL 中使用的 slug(car)和 API 中使用的 slug(light)都可用。 - 地图位置:大多数广告的位置会被模糊处理约 500 m(
approximate_location)。 - 不提供电话号码。 Divar 仅向已登录用户显示电话号码;此服务不会登录。使用
url打开广告。 - 大额价格。 详情页价格取自广告的价格行;广告其他位置的 Divar 原始数值在数值较大时会因浮点数舍入而失真。
- 不可用功能: Divar 网站本身的价格估值、在 Divar 端按价格排序、翻阅某个商家的全部广告,以及任何需要登录才能访问的内容。
- 速率限制: 测试时未发现速率限制,但请适度调用。
- 机器人检查: 如果 Divar 提供了验证页面,请安装
divar-mcp[browser]并运行patchright install chromium;之后服务会通过无头浏览器处理一次验证。未安装时,调用会失败并返回相应提示。
常见问题
有供 AI Agent 使用的 Divar API 或 MCP 服务吗?
有:这个非官方 MCP 服务封装了 Divar 网站自身使用的公开 JSON API,因此 Claude、Cursor 或 Copilot 可以搜索广告、查看详情并比较价格。Divar 官方的 Kenar API 面向合作伙伴(需要 OAuth 和 API 密钥),本项目不会使用它。
它是官方、安全且免费的吗?
它是非官方的、开源的(MIT),并且免费。它只读,无需账号或 API 密钥,在你的机器上运行,中间没有托管服务。
它能给卖家发消息、发布广告或获取电话号码吗?
不能。这些操作需要登录 Divar,因此特意未纳入其中。
匹配的广告出现时,它能提醒我吗?
它不会主动推送。dv_new_since 只会返回晚于某个时间戳的广告,而 dv_watch 会为已保存的搜索记录该时间戳(保存在 ~/.divar-mcp/state.json 中,或使用 DIVAR_MCP_STATE),因此调度程序(cron、Claude Code 循环)可以通过 action: "check" 调用 dv_watch。
价格单位是 Rial 还是 Toman?
Toman。Divar 的 API 已使用 Toman,因此无需转换。
如何将它与 Claude、Cursor 或 Copilot 搭配使用?
使用 claude mcp add divar -- uvx divar-mcp 添加该服务,或使用快速开始中的相应配置,然后用波斯语或英语以自然语言提问。
它能用于汽车、手机和工作,而不仅限于住房吗?
可以。dv_categories 会列出包含 236 个节点的类别树,dv_filters 会显示各类别的筛选条件(品牌和型号、里程、价格等),因此同一套搜索工具适用于各个类别。
如何调试 Agent 看到的内容?
npx @modelcontextprotocol/inspector uvx divar-mcp
配置
| 变量 | 默认值 | 含义 |
|---|---|---|
DIVAR_MCP_PROXY | unset | 用于访问 divar.ir 的请求的可选 HTTP 代理 URL,也可以是逗号分隔的列表:其中一个被屏蔽或连接失败后,将使用下一个。系统代理设置会被忽略 |
DIVAR_MCP_STATE | ~/.divar-mcp/state.json | 用于保存监控项和价格历史的文件(供 dv_watch 和 dv_price_trend 使用) |
波斯语:Divar MCP 服务
divar-mcp 是一个非官方、只读的 Divar MCP 服务。Divar 是伊朗最大的信息分类网站。该服务允许您的 AI 助手(Claude、Cursor、Copilot 等)搜索伊朗各个城市的分类广告(房屋买卖和租赁、汽车、手机等)、查看广告详情、比较多个广告,并根据预算找到最便宜、最合适的广告。
功能
- 搜索广告,支持按城市、街区、类别、文本、价格(以及租赁押金)、品牌和型号,以及各类别的筛选条件搜索。
- 查找最低价广告和低于市场价的广告,并剔除虚假价格。
- **价格评估:**判断某条广告的价格相较于类似广告是偏贵还是偏便宜,并提供价格统计数据(中位数和四分位数)。
- 比较广告并查找类似广告。
- 查看地图上某个地点附近的广告、街区及街区边界。
- 监控新广告,并在您自己的系统上保存搜索记录和价格趋势。
注意事项
- 仅供读取:不支持登录账号、发布广告、与卖家聊天或显示卖家电话号码。无需 API 密钥或用户账号,并且服务在您自己的系统上运行。
- 所有价格均以托曼为单位;未标明价格表示价格面议。价格是卖家填写的价格,并非最终成交价。
- 使用波斯语提问效果最佳。
- 如有需要,可设置代理,配置变量
DIVAR_MCP_PROXY。
安装(请先安装 uv)。在 Claude Code 中:
claude mcp add divar -- uvx divar-mcp
在 Claude Desktop、Cursor 和其他应用中,使用 Quick start 部分的相同配置。
示例问题
- “文克区最便宜的两居室出租房是哪套?押金低于 10 亿托曼。”
- “这条汽车广告的价格相比类似广告怎么样?”
- “显示今天早上以来马什哈德发布的新手机广告。”
- “某个街区待售公寓的每平方米价格中位数是多少?”
开发
git clone https://github.com/sepehr071/divar-mcp && cd divar-mcp
uv sync
uv run ruff check . && uv run ruff format --check .
uv run python -m pytest -q # offline, recorded fixtures
uv run python -m pytest -m live -q # real API, one test per tool
uv build
工具位于 src/divar_mcp/(places.py、catalog.py、search.py、post.py、market.py、watch.py、meta.py);每个工具都是带有类型注解的异步函数,并附有说明何时使用它的文档字符串。欢迎提交问题和 PR。
发布版本:更新 pyproject.toml 和 server.json 中的版本,然后推送一个 v* 标签。GitHub Actions 会发布到 PyPI。
相关服务
- iran-mcp:伊朗服务 MCP 服务目录
- digikala-mcp:提供 Digikala 商品和价格信息
- torob-mcp:比较 Torob 上伊朗商店的商品价格
- snapp-mcp:提供 Snapp 服务
- technolife-mcp:提供 Technolife 电子产品信息
- jabama-mcp:提供 Jabama 住宿信息
免责声明
本项目为非官方项目,与 Divar 无关联,也未获得 Divar 认可。它通过 divar.ir Web 应用的接口读取公开数据,这些接口可能随时更改,恕不另行通知。它返回的所有内容都是卖家填写的要价,不构成建议。请保持较低的请求频率。
如果这个项目帮您减少了点击操作,点个星标可以帮助其他人发现它。
作者
由 Sepehr Radmard(سپهر رادمرد)开发和维护。欢迎通过 LinkedIn 联系,或在 GitHub 上关注 @sepehr071,了解更多面向伊朗网站的 MCP 服务;所有服务均列于 iran-mcp。如果这个项目为您节省了时间,请给仓库点个星标,帮助其他人发现它。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
