
Otaghak
io.github.sepehr071v0.1.1更新于 Oct 5, 2026
Unofficial read-only Otaghak: search Iranian villas, availability, exact stay prices, reviews.
概览
只读搜索伊朗 Otaghak 住宿:可订日期、按日期和人数计算的准确价格、评价与房东数据。
- 功能
- 把 Otaghak 的公开接口封装为 15 个只读工具。可按城市、省份或主题合集搜索别墅、木屋和公寓,并返回逐晚日历、最少与最多入住晚数、设施、房屋规则和取消政策。报价工具会汇总折扣后的房晚、加人费用和可选延迟退房费用;其他工具覆盖评价、房东响应与接单率、相似房源、优惠、节假日和目的地指南。
- 适用场景
- 适合让助手比较伊朗度假房源、查看哪些夜晚可订,或按具体人数和日期算出真实总价,而不是只看列表页价格。它只用于查询,预订仍需在 Otaghak 网站完成。
- 运行要求
- 需要本地 Python 运行环境与 uv(或 pip),通过 stdio 运行 otaghak-mcp 包;无需账号或 API 密钥。需要能访问 Otaghak 公开接口的网络,可选变量 OTAGHAK_MCP_PROXY 为所有请求设置 HTTP 代理,系统代理设置会被忽略。
安装
在 SourceWeft 中
- 打开 控制台中的 Otaghak,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
🏡 otaghak-mcp
Let your AI agent find a place to stay on Otaghak.
Search villas, cottages and apartments across Iran, check which nights are free, get the exact price
for your dates and guests, and read reviews and host stats, all from Claude, Cursor or Copilot.
[PyPI] [Python] [CI] [MCP Registry] [License: MIT]
[Install in Cursor] [Install in VS Code]
Quick start · What it can do · Tools · FAQ · فارسی
Why
On Otaghak the price on a listing card is rarely what you pay: every night has its own price, weekends cost
more, discounts change per night, extra guests cost extra per night, and calendars only open about a month
ahead. Getting the real total for my dates and my group means clicking through calendars one room at a time.
An agent with otaghak-mcp does the clicking:
You: We are 4 people, Ramsar, 20 to 23 October. How much is the "سوییسی لیلی" cottage in total?
Agent: calls
ot_search_rooms(city=["ramsar"], name="لیلی")→ot_price_quote(room_id=2508916, check_in="2026-10-20", check_out="2026-10-23", guests=4)The cottage includes 3 guests and takes at most 4, so the 4th person costs 400,000 a night (discounted like the nights). All three nights are free and bookable instantly. Want me to compare it with
ot_similar_rooms?
Real tool output from 2026-10-04; prices change all the time. Prices are in Toman.
What it can do
- 🔎 Search stays in a city, province or themed collection (beach, jungle, villa with pool, ...) for your dates and group, sorted by price, rating or discount
- 🧮 Exact price for dates and guests: every night after discount, extra-guest charges, optional late checkout
- 📅 Calendars: which nights are free, nightly prices, minimum and maximum stay, weekends and holidays
- 🏠 Room details: rooms and beds, amenities, house rules, check-in times, cancellation policy, nearby shops, photos
- ⭐ Quality: rating, six category scores, percent who recommend it, reviews with host replies, host response time and acceptance rate
- 🏷️ Deals: last-second discounts and the most discounted stays
- 🧭 Guides: destination guides, FAQ, blog articles and the site's rules (cancellation, refunds)
- 🔒 Read-only by design: no login, no booking, no payment, no SMS codes
Quick start
You need uv.
Claude Code
Claude Desktop
Settings → Developer → Edit Config, then add:
Cursor
Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.
VS Code (Copilot agent mode)
Click Install in VS Code above, or add to .vscode/mcp.json:
Anything else
It's a standard stdio MCP server: run uvx otaghak-mcp, or pip install otaghak-mcp and run otaghak-mcp.
Then just ask:
- "Cheapest villa with a pool near Ramsar for 6 people next weekend?"
- "Is room 2512254 free from 20 to 23 October, and what's the total for 5 guests?"
- "Pet-friendly cottages in Gilan with a rating of 4 or more."
- یک کلبه جنگلی در ماسال برای ۴ نفر، آخر هفته بعد، با رزرو آنی پیدا کن.
How it works
otaghak-mcp runs locally and calls the same public endpoints the otaghak.com website uses.
There's no hosted server in between, no API key, and nothing about you is sent anywhere else.
Tools
Rooms are identified by numeric ids like 2512254 (the number in otaghak.com/room/2512254/), places by slugs
like ramsar (city), mazandaran (province) or beach (collection).
🔎 Search (5)
🏠 Room and host (4)
📅 Dates and prices (4)
🧭 Help and guides (2)
All 15 tools are annotated readOnlyHint: true and return compact structured JSON, so they don't flood the agent's context.
Good to know
- Prices are in Toman, as on the site (1 Toman = 10 Rial).
price_per_nightis after discount. Without dates, prices are the room's undated starting price, not a quote. - The amount to pay is
ot_price_quote→total: the nights after discount (the room page's payable amount), plus extra guests above the room's included guests (discounted like the nights), plus optional late checkout. Coupons and wallet credit need a login and are not included. Search results carry astay_totalestimate that can be a few Toman off; with dates,sort="cheapest"orders each page by it. - Dates are Gregorian
YYYY-MM-DDandcheck_outis the departure day. No past dates, at most 20 nights, and hosts' calendars open only to the end of the next Jalali month; the tools say so clearly instead of returning an empty list. A Jalali date gets an error with its Gregorian twin. - Guests: each room includes
base_guestsin its price and takes up tomax_guests.ot_price_quotechecks the limit itself (the site's own search doesn't when you ask for a specific room). - Ratings are 0–5;
nullmeans not rated yet. Holiday flags are only published about 7 weeks ahead. - Location is approximate (about 100 m); the exact address and the host's phone come only after booking.
- Persian queries match best (
رامسر,کلبه), English slugs work too.
FAQ
Can it book a room for me?
No, and that's deliberate. It has no login and never calls booking, payment, OTP/SMS, wallet, favorites or review endpoints. The agent finds the room and the exact price; you book on otaghak.com.
Why does a search for December return an error?
Hosts' calendars on Otaghak are open only to the end of the next Jalali month, and stays are limited to 20 nights. Outside that window the site has no prices, so the tools tell you the last bookable day instead.
Do I need an Iranian IP?
No. It was tested from an Iranian home connection and through a Turkish exit, and both worked. Cloud servers
outside Iran were not tested; if Otaghak blocks one, set OTAGHAK_MCP_PROXY.
I get "did not answer in time" or "Could not reach"
The server retries a failed connection once (timeouts are not retried). If it keeps failing, check your connection
or set OTAGHAK_MCP_PROXY. Normal system proxy variables are ignored on purpose, because direct calls are the fastest.
Claude Desktop says uvx is not found
Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.
How do I debug what the agent sees?
Configuration
فارسی
otaghak-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه میدهد در اتاقک ویلا، کلبه و آپارتمان جستجو کند، شبهای خالی را ببیند، مبلغ دقیق اقامت را برای تاریخ و تعداد نفرات شما حساب کند و نظرات و وضعیت میزبان را بخواند.
- فقط خواندنی است: وارد حساب نمیشود، رزرو و پرداخت نمیکند و کد پیامکی نمیفرستد.
- مبلغ نهایی را با قیمت تکتک شبها، هزینه نفر اضافه و تأخیر در تخلیه حساب میکند.
- همه قیمتها به تومان است و تاریخها میلادی (YYYY-MM-DD) هستند.
- روی سیستم خود شما اجرا میشود و به هیچ سرور واسطی داده نمیفرستد.
نصب در Claude Code:
بعد بپرسید: «ارزانترین ویلای استخردار رامسر برای ۶ نفر از ۲۰ تا ۲۳ اکتبر چند تمام میشود؟»
Development
Tools live in src/otaghak_mcp/search.py, room.py, pricing.py and info.py; each is a typed async function
with a docstring that tells the agent when to use it. Issues and PRs are welcome, especially new tools and fixes for
API changes.
Releases: bump the version in pyproject.toml and server.json, then push a v* tag. GitHub Actions tests,
publishes to PyPI and the MCP Registry, and creates the GitHub Release.
Disclaimer
Unofficial and not affiliated with or endorsed by Otaghak. It uses the public endpoints of the otaghak.com website, which can change without notice. Otaghak offers an official booking web service to partners under contract; this is not it. Please keep request rates reasonable.
License
来源:README.md,提交 a87f9fc
工具
0版本历史
1- v0.1.1最新Oct 5, 2026
