Skip to main content
otaghak-mcp: unofficial Otaghak MCP server for Claude, Cursor and Copilot

🏡 otaghak-mcp: Otaghak MCP server for AI agents

Unofficial, read-only MCP server for Otaghak (اتاقک): let your AI agent find a place to stay in Iran.
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 · فارسی


For AI agents

  • What: unofficial, read-only MCP server for Otaghak (اتاقک), an Iranian marketplace for villas, cottages and apartments. Queries work best in Persian, English slugs work too; prices are in Toman.
  • Install: claude mcp add otaghak -- uvx otaghak-mcp (stdio transport; needs Python 3.10+ and uv).
  • Auth: none, no API key. Optional OTAGHAK_MCP_PROXY (HTTP proxy) if Otaghak blocks your network.
  • Access: read-only. No login, booking, payment or SMS codes, so no confirmation is needed before calling tools.
  • Tools: 15, all prefixed ot_*. Start with ot_find_place, then ot_search_rooms → ot_room or ot_room_calendar → ot_price_quote. For bargains use ot_deals.
  • Use when: finding a stay in Iran and getting the exact total for dates and guests, with reviews and host stats.
  • Do not use when: you need to book or pay (the user does that on otaghak.com), or want prices past the open calendar (end of the next Jalali month, at most 20 nights).
  • Output: compact JSON. Prices in Toman, dates Gregorian YYYY-MM-DD (check_out is the departure day), ratings 0-5. Pass the numeric room id between tools.
  • Machine-readable: server.json; catalog of all Iranian MCP servers: awesome-iran-mcp (TOOLS.md, servers.json, llms.txt).

Why use Otaghak MCP

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)

Night Price Before discount
Tue 20 Oct 4,000,000 5,000,000
Wed 21 Oct 4,000,000 5,000,000
Thu 22 Oct 4,250,000 5,000,000
1 extra guest (3 nights) 980,000 1,200,000
Total to pay 13,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
claude mcp add otaghak -- uvx otaghak-mcp
Claude Desktop

Settings → Developer → Edit Config, then add:

{
  "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:

{
  "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

  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)
Tool What it does
ot_find_place Place name → city / province slug; a room code → that room
ot_search_rooms Stays in a city, province or collection for dates and guests, with filters and sorting
ot_search_filters Filter codes (pool, parking, pets, beach or jungle area, ...), room types, price range, landmarks
ot_destinations Popular cities and collections, and the cities of a collection
ot_deals Last-second deals and the most discounted stays
🏠 Room and host (4)
Tool What it does
ot_room Details, amenities, rules, check-in/out times, cancellation policy, host, location, photos
ot_reviews Rating, star histogram, category scores, percent who recommend, reviews with host replies
ot_similar_rooms 4-5 alternatives, re-priced and checked for your dates and guests; while the site's list is empty, a same-city, same-type search up to 1.5x the room's price (note says so)
ot_host Host response time, response and acceptance rates, other rooms, newest reviews
📅 Dates and prices (4)
Tool What it does
ot_room_calendar Day by day: free or booked, price, min/max nights, weekend, holiday, late checkout
ot_price_quote Exact amount to pay for dates and guests, extra guests and late checkout included
ot_holidays Iranian public holidays in a date range, with Jalali dates
ot_late_checkout Whether a room offers late checkout, hours, price, and if it's open on your departure day
🧭 Help and guides (2)
Tool What it does
ot_help Help-center FAQ, guest terms (booking, cancellation policies, refunds, wallet), host rules
ot_travel_guide Destination 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

Is there an Otaghak API or MCP server for AI agents?

otaghak-mcp is an unofficial MCP server for Otaghak: it exposes the public endpoints of otaghak.com as 15 read-only tools, so an agent can search stays and get exact prices. (Otaghak's own booking web service is for partners under contract; this is not it.)

How do I use Otaghak with Claude, Cursor or Copilot?

Install it with uvx otaghak-mcp (see Quick start), then ask in Persian or English, for example "cheapest villa with a pool near Ramsar for 6 people next weekend, with the exact total".

Is it official, safe and free?

It is unofficial and MIT licensed, so free to use. It is read-only: no login, no API key, no booking or payment, and it runs on your machine.

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?
npx @modelcontextprotocol/inspector uvx otaghak-mcp

Configuration

Variable Default Meaning
OTAGHAK_MCP_PROXY unset HTTP proxy for every request, e.g. http://user:pass@host:port

فارسی: سرور MCP اتاقک

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

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

نصب در Claude Code:

claude mcp add otaghak -- uvx otaghak-mcp

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

Development

git clone https://github.com/sepehr071/otaghak-mcp && cd otaghak-mcp
uv sync
uv run pytest            # offline, against recorded responses
uv run pytest -m live    # real API
uv 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.

If this saves you clicks, a star helps others find it.

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

Metadata

Release files for otaghak-mcp 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for otaghak-mcp 0.1.4
File Size Uploaded
otaghak_mcp-0.1.4.tar.gz 447.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for otaghak-mcp 0.1.4
File Interpreter ABI Platform
otaghak_mcp-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 482.2 kB

Release files / otaghak_mcp-0.1.4.tar.gz

Download URL otaghak_mcp-0.1.4.tar.gz
Size 447.4 kB
Tags Source
SHA-256 checksum
How to use checksums
aff20becc272effd9c68f2b2c18b05f02dfe5c0d4cebad5950e09f6d4d329a03
BLAKE2b-256 checksum
How to use checksums
9c03e112ff0a171b5301f49426d938c59d43b097b407b5abc51d0798d8953fa2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / otaghak_mcp-0.1.4-py3-none-any.whl

Download URL otaghak_mcp-0.1.4-py3-none-any.whl
Size 34.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30b2dfb1dbe9defb3ecb0ed66afc2fb97b4a4860c46ccc2334d42e4e402d75ec
BLAKE2b-256 checksum
How to use checksums
b814116735ac7ac008c3216f7df91c831b1a05ab3391f61a4a427d7fe1eb2919
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page