Otaghak

io.github.sepehr071v0.1.1更新於 Oct 5, 2026

Unofficial read-only Otaghak: search Iranian villas, availability, exact stay prices, reviews.

概覽

AI 產生的概覽

唯讀搜尋伊朗 Otaghak 住宿:可訂夜晚、依日期與人數計算的精確價格、評價與房東資料。

功能
把 Otaghak 的公開端點包裝成 15 個唯讀工具。可依城市、省份或主題合輯搜尋別墅、木屋與公寓,並回傳逐晚日曆、最少與最多入住晚數、設施、房屋規則與取消政策。報價工具會加總折扣後的房晚、加人費用與選購的延後退房費用;其他工具涵蓋評價、房東回應與接單率、相似房源、優惠、假日與目的地指南。
適用情境
適合讓助理比較伊朗度假房源、查看哪些夜晚可訂,或依特定人數與日期算出實際總價,而不是只看列表頁價格。它僅供查詢,訂房仍須在 Otaghak 網站完成。
執行需求
需要本機 Python 執行環境與 uv(或 pip),透過 stdio 執行 otaghak-mcp 套件;不需要帳號或 API 金鑰。需要能連線 Otaghak 公開端點的網路,選用變數 OTAGHAK_MCP_PROXY 可為所有請求設定 HTTP 代理,系統代理設定會被忽略。
安裝前請注意
此服務非官方,與 Otaghak 無關聯,依賴可能隨時變動的公開端點。設計上為唯讀:不登入、不訂房、不付款、不發簡訊、不存取錢包,因此不會購買或修改任何內容。查詢內容與日期會傳送到 Otaghak 伺服器;選用的 OTAGHAK_MCP_PROXY 值可能包含憑證,應視為機密。價格以托曼計價且經常變動,位置資訊為概略值。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Otaghak,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[otaghak-mcp: let your AI agent find the real price of a stay on Otaghak]

🏡 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)

NightPriceBefore discount
Tue 20 Oct4,000,0005,000,000
Wed 21 Oct4,000,0005,000,000
Thu 22 Oct4,250,0005,000,000
1 extra guest (3 nights)980,0001,200,000
Total to pay13,230,000

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
bash
claude mcp add otaghak -- uvx otaghak-mcp
Claude Desktop

Settings → Developer → Edit Config, then add:

json
{  "mcpServers": {    "otaghak": { "command": "uvx", "args": ["otaghak-mcp"] }  }}
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:

json
{  "servers": {    "otaghak": { "type": "stdio", "command": "uvx", "args": ["otaghak-mcp"] }  }}
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

text
  AI agent  (Claude, Cursor, Copilot, ...)      │      │  MCP over stdio      ▼  otaghak-mcp  (runs on your machine)      │      │  HTTPS (REST + OData)      └──────▶  core.otaghak.com, www.otaghak.com/blog

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)
ToolWhat it does
ot_find_placePlace name → city / province slug; a room code → that room
ot_search_roomsStays in a city, province or collection for dates and guests, with filters and sorting
ot_search_filtersFilter codes (pool, parking, pets, beach or jungle area, ...), room types, price range, landmarks
ot_destinationsPopular cities and collections, and the cities of a collection
ot_dealsLast-second deals and the most discounted stays
🏠 Room and host (4)
ToolWhat it does
ot_roomDetails, amenities, rules, check-in/out times, cancellation policy, host, location, photos
ot_reviewsRating, star histogram, category scores, percent who recommend, reviews with host replies
ot_similar_rooms4-5 alternatives, re-priced and checked for your dates and guests
ot_hostHost response time, response and acceptance rates, other rooms, newest reviews
📅 Dates and prices (4)
ToolWhat it does
ot_room_calendarDay by day: free or booked, price, min/max nights, weekend, holiday, late checkout
ot_price_quoteExact amount to pay for dates and guests, extra guests and late checkout included
ot_holidaysIranian public holidays in a date range, with Jalali dates
ot_late_checkoutWhether a room offers late checkout, hours, price, and if it's open on your departure day
🧭 Help and guides (2)
ToolWhat it does
ot_helpHelp-center FAQ, guest terms (booking, cancellation policies, refunds, wallet), host rules
ot_travel_guideDestination guide, its FAQ, related search pages and blog articles

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_night is 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 a stay_total estimate that can be a few Toman off; with dates, sort="cheapest" orders each page by it.
  • Dates are Gregorian YYYY-MM-DD and check_out is 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_guests in its price and takes up to max_guests. ot_price_quote checks the limit itself (the site's own search doesn't when you ask for a specific room).
  • Ratings are 0–5; null means 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?
bash
npx @modelcontextprotocol/inspector uvx otaghak-mcp

Configuration

VariableDefaultMeaning
OTAGHAK_MCP_PROXYunsetHTTP proxy for every request, e.g. http://user:pass@host:port

فارسی

otaghak-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد در اتاقک ویلا، کلبه و آپارتمان جستجو کند، شب‌های خالی را ببیند، مبلغ دقیق اقامت را برای تاریخ و تعداد نفرات شما حساب کند و نظرات و وضعیت میزبان را بخواند.

  • فقط خواندنی است: وارد حساب نمی‌شود، رزرو و پرداخت نمی‌کند و کد پیامکی نمی‌فرستد.
  • مبلغ نهایی را با قیمت تک‌تک شب‌ها، هزینه نفر اضافه و تأخیر در تخلیه حساب می‌کند.
  • همه قیمت‌ها به تومان است و تاریخ‌ها میلادی (YYYY-MM-DD) هستند.
  • روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.

نصب در Claude Code:

bash
claude mcp add otaghak -- uvx otaghak-mcp

بعد بپرسید: «ارزان‌ترین ویلای استخردار رامسر برای ۶ نفر از ۲۰ تا ۲۳ اکتبر چند تمام می‌شود؟»

Development

bash
git clone https://github.com/sepehr071/otaghak-mcp && cd otaghak-mcpuv syncuv run pytest            # offline, against recorded responsesuv run pytest -m live    # real APIuv run ruff check .

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

MIT

來源:README.md,提交 a87f9fc

工具

0
工具後設資料尚未被收錄。

版本歷史

1
  1. v0.1.1最新Oct 5, 2026