otaghak-mcp
Unofficial, read-only MCP server for Otaghak that lets AI agents search Iranian stays and get exact prices, availability, reviews, host stats, deals, and travel/help content without booking or payment.
Search villas, cottages, apartments, and eco-lodges by city, province, collection, dates, guests, price, rating, room type, amenities, and filters; sort by price, rating, discount, etc.
Resolve place names to city/province slugs or room codes to rooms; list popular destinations and collections.
Get exact stay price quotes for dates and guests, including discounted nights, extra-guest charges, and optional late checkout; check availability and stay limits.
Read room calendars showing free/booked nights, nightly prices, discounts, min/max stay, instant booking, weekends, holidays, and late checkout.
View room details: capacity, beds, amenities, house rules, check-in/out times, cancellation policy, host, approximate location, photos, and nearby places.
Read reviews and ratings, category scores, recommendation percentages, and host replies; get host response/acceptance rates and other rooms.
Find similar rooms and current last-second or most-discounted deals.
List Iranian public holidays and weekdays for trip planning.
Read Otaghak help-center FAQ, guest/host terms, cancellation/refund policies, destination travel guides, and blog articles.
Stay read-only by design: no login, booking, payment, SMS/OTP, wallet, favorites, or review writing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@otaghak-mcp Find a villa in Ramsar for 4 guests from Oct 20 to 23 and show total price."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🏡 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.
For AI agents · Why · What it can do · Quick start · Tools · How it works · Good to know · FAQ · Configuration · فارسی · Development · Related servers · Disclaimer · License
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, or a comma-separated list) 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 withot_find_place, thenot_search_rooms→ot_roomorot_room_calendar→ot_price_quote. For bargains useot_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_outis the departure day), ratings 0-5. Pass the numeric room id between tools.Machine-readable:
server.json; catalog of all Iranian MCP servers: iran-mcp (TOOLS.md, servers.json, llms.txt).
Related MCP server: jabama-mcp
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)
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 too, at a slightly different rate than 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 mcp add otaghak -- uvx otaghak-mcpSettings → Developer → Edit Config, then add:
{
"mcpServers": {
"otaghak": { "command": "uvx", "args": ["otaghak-mcp"] }
}
}Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.
Click Install in VS Code above, or add to .vscode/mcp.json:
{
"servers": {
"otaghak": { "type": "stdio", "command": "uvx", "args": ["otaghak-mcp"] }
}
}codex mcp add otaghak -- uvx otaghak-mcpOr in ~/.codex/config.toml:
[mcp_servers.otaghak]
command = "uvx"
args = ["otaghak-mcp"]Add to ~/.gemini/settings.json:
{
"mcpServers": {
"otaghak": { "command": "uvx", "args": ["otaghak-mcp"] }
}
}Add the Claude Desktop block to ~/.codeium/windsurf/mcp_config.json.
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."
"Show the reviews and the host's response rate for room 2512254, then suggest similar rooms for the same dates."
"Which Iranian holidays fall in the next month, and is late checkout offered by this room?"
یک کلبه جنگلی در ماسال برای ۴ نفر، آخر هفته بعد، با رزرو آنی پیدا کن.
قیمت نهایی ویلای شماره ۲۵۱۲۲۵۴ برای ۵ نفر از ۲۰ تا ۲۳ اکتبر چقدر می‌شود؟
تخفیف‌دارترین اقامتگاه‌های شمال را نشان بده.
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/blogotaghak-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).
Tool | What it does |
| Place name → city / province slug; a room code → that room |
| Stays in a city, province or collection for dates and guests, with filters and sorting |
| Filter codes (pool, parking, pets, beach or jungle area, ...), room types, price range, landmarks |
| Popular cities and collections, and the cities of a collection |
| Last-second deals and the most discounted stays |
Tool | What it does |
| Details, amenities, rules, check-in/out times, cancellation policy, host, location, photos |
| Rating, star histogram, category scores, percent who recommend, reviews with host replies |
| 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 ( |
| Host response time, response and acceptance rates, other rooms, newest reviews |
Tool | What it does |
| Day by day: free or booked, price, min/max nights, weekend, holiday, late checkout |
| Exact amount to pay for dates and guests, extra guests and late checkout included |
| Iranian public holidays in a date range, with Jalali dates |
| Whether a room offers late checkout, hours, price, and if it's open on your departure day |
Tool | What it does |
| Help-center FAQ, guest terms (booking, cancellation policies, refunds, wallet), host rules |
| 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_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; the exact address and the host's phone come only after booking.
Persian queries match best (
رامسر,کلبه), English slugs work too.
FAQ
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.)
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".
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.
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.
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.
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.
The server retries a timeout, failed connection, 5xx or 429 up to twice with a short backoff. 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.
If Otaghak shows a bot-check page, install the optional browser fallback: pip install "otaghak-mcp[browser]" (or
uvx --from "otaghak-mcp[browser]" otaghak-mcp), then run patchright install chromium.
Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.
npx @modelcontextprotocol/inspector uvx otaghak-mcpConfiguration
Variable | Default | Meaning |
| unset | HTTP proxy for every request, e.g. |
فارسی: سرور MCP اتاقک
otaghak-mcp یک سرور MCP غیررسمی برای اتاقک در ایران است که به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد در اتاقک ویلا، کلبه و آپارتمان جستجو کند، شب‌های خالی را ببیند، مبلغ دقیق اقامت را برای تاریخ و تعداد نفرات شما حساب کند و نظرات و وضعیت میزبان را بخواند.
فقط خواندنی است: وارد حساب نمی‌شود، رزرو و پرداخت نمی‌کند و کد پیامکی نمی‌فرستد.
مبلغ نهایی را با قیمت تک‌تک شب‌ها، هزینه نفر اضافه و تأخیر در تخلیه حساب می‌کند.
همه قیمت‌ها به تومان است و تاریخ‌ها میلادی (YYYY-MM-DD) هستند.
روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.
برای پیدا کردن آن در گوگل یا رجیستری MCP، «سرور MCP اتاقک» یا «otaghak mcp» را جستجو کنید.
کلیدواژه‌های مرتبط: اتاقک، رزرو ویلا، رزرو کلبه، اجاره ویلا شمال، اجاره کلبه جنگلی، اقامتگاه بوم‌گردی، اجاره روزانه ویلا، قیمت اقامتگاه، سرور MCP فارسی، هوش مصنوعی و رزرو اقامتگاه.
ابزارها (۱۵ ابزار با پیشوند ot_): جستجوی اقامتگاه، فیلترها، مقصدها، تخفیف‌ها، جزئیات اتاق، نظرات، میزبان، اتاق‌های مشابه، تقویم، قیمت دقیق، تعطیلات، تأخیر در تخلیه، راهنمای کمک و راهنمای سفر.
نصب در 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 python -m pytest # offline, against recorded responses
uv run python -m 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.
Related servers
Jabama MCP server for villas, tours and events
Flytoday MCP server for flights, hotels and villas
MrBilit MCP server for flights, trains, buses and hotels
Iran Quake MCP server for recent earthquakes in Iran
All servers: iran-mcp, the catalog of Iranian MCP servers
Listed on mcpfarsi.ir, the Persian MCP marketplace
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.
Author
Built and maintained by Sepehr Radmard (سپهر رادمرد). Connect on LinkedIn or follow @sepehr071 on GitHub for more MCP servers for Iranian websites, all listed in iran-mcp. If this saves you time, a star on the repo helps other people find it.
License
Available Tools
15 toolsot_dealsDeals and discountsARead-onlyIdempotent
Current discounts: the home page's last-second deals and the most discounted stays (biggest percent first).
last_second (site-wide, undated prices, shown 14:00-23:50 Iran time) is left out when city is given.
most_discounted lists rooms of the discounted collection (in city if given). Next: ot_price_quote.
Inputs: city, limit, guests, check_in, +1 more.
ot_destinationsPopular destinations and collectionsARead-onlyIdempotent
Popular cities and collections (themed landing pages: discounted, jungle villas, villas with pool, ...).
Use when there is no destination yet, or for collection codes. With collection, also its city slugs.
Inputs: collection.
ot_find_placeFind place or room codeARead-onlyIdempotent
Turn a place name into the city / province slugs that ot_search_rooms needs, or a room code into its room.
Room names are not searchable here (use ot_search_rooms name). Next: ot_search_rooms, or ot_room for a room.
Inputs: query (required).
ot_helpHelp: rules and FAQARead-onlyIdempotent
Read Otaghak's help center: the FAQ, or the guest terms (booking and cancellation rules, the five cancellation policies, refunds, wallet, check-in rules), host rules or quality policy.
Without query: every FAQ question or the page's section titles; with it, the matches. A room's own
cancellation policy is in ot_room.
Inputs: query, topic.
ot_holidaysHolidays and weekdaysARead-onlyIdempotent
List Iranian public holidays (Fridays included) in a date range, with Jalali dates and weekdays.
Flags are filled only about 7 weeks ahead: later days with no holidays mean unknown, not working days.
Inputs: end (required), start (required).
ot_hostHost profileARead-onlyIdempotent
Check a host: response time, response and acceptance rates, member since, active rooms (undated starting prices) and the newest guest reviews across all their rooms.
Pass host_id, or room_id to find the room's host.
Inputs: host_id, room_id, full_text, rooms_limit, +1 more.
ot_late_checkoutLate checkoutARead-onlyIdempotent
Check whether a room offers late checkout, for how many hours and at what price (Toman, a unit not confirmed on the site), and with check_out whether it can be booked on that departure day (offered rooms are often closed for it on a given day).
ot_price_quote adds it to a total with late_checkout_hours.
Inputs: room_id (required), check_out.
ot_price_quoteExact stay priceARead-onlyIdempotent
Get the amount to pay (Toman) for a room, dates and guests: nights_total (the room page's
payable amount for the base guests), the extra-guest charge, optional late checkout, and the total.
nightly is the calendar breakdown (rounded per night, so it can add up to a little more than nights_total).
Also checks free nights, stay length and capacity (available=false with a reason otherwise).
Inputs: guests (required), room_id (required), check_in (required), check_out (required), +1 more.
ot_reviewsRoom reviews and ratingARead-onlyIdempotent
Get a room's rating (0-5), star histogram, six category scores, percent of guests who recommend it, and written reviews, newest first (with host replies).
rating is null when not rated yet. ot_host has reviews across all of a host's rooms.
Inputs: room_id (required), page, limit, full_text.
ot_roomRoom detailsARead-onlyIdempotent
Get one room: description, capacity, rooms and beds, amenities, house rules, check-in/out times, cancellation policy, host, nearby places, approximate location, photos and nightly price.
With dates the price is the average night even if booked (ot_price_quote / ot_room_calendar say if free);
without, an undated starting price. instant_on_some_nights is room-level; per night see instant there.
Next: ot_price_quote, ot_room_calendar, ot_reviews, ot_host, ot_similar_rooms.
Inputs: room_id (required), check_in, check_out, full_text, +1 more.
ot_room_calendarRoom calendarARead-onlyIdempotent
Get a room's calendar day by day: nightly price after and before discount (Toman), free or booked, instant booking, min and max nights when arriving that day, weekend, public holiday, late checkout.
A night is priced on its arrival day. Absent keys = no discount / no. Next: ot_price_quote.
Inputs: room_id (required), end, start.
ot_search_filtersSearch filter codesARead-onlyIdempotent
List the search filters of a city, province or collection (or the whole site) with the codes ot_search_rooms takes.
Returns the price range (Toman), room type ids, filter codes (pool, pets, parking, ...) and, for a city, districts and landmarks (district_id). Use for an amenity, rule, room type or landmark.
Inputs: city, province, collection.
ot_search_roomsSearch staysARead-onlyIdempotent
Search Otaghak stays (villas, cottages, apartments, eco-lodges) in a city, province or collection.
With dates every room is available and carries stay_total (estimate) for guests; without, undated starting
prices. Slugs: ot_find_place; filter codes: ot_search_filters. Next: ot_room, ot_price_quote.
Inputs: city, name, page, sort, +18 more.
ot_similar_roomsSimilar roomsARead-onlyIdempotent
Get 4-5 alternatives to a room (same city and type), as the room page shows them (or, while that list is
empty upstream, a search of the room's city and type up to 1.5x its price; note says so).
Without dates prices are undated starting prices; with dates they are re-priced, and booked or too small rooms go to not_available. Next: ot_room, ot_price_quote.
Inputs: room_id (required), guests, check_in, check_out.
ot_travel_guideDestination travel guideARead-onlyIdempotent
Get the site's travel guide for a destination: guide text, the destination's FAQ (best season, sights, prices), related search pages (city themes such as beach, cottage, apartment with listing counts) and matching blog articles (restaurants, sights, souvenirs).
City theme slugs from related_pages go to ot_search_rooms city_tag.
Inputs: place (required), kind, full_text, max_chars, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Each tool targets a distinct part of the stay-research workflow: place resolution, filter discovery, room search, room detail, reviews, host info, calendar, pricing, holidays, late checkout, deals, guides, and help. The few seemingly related tools (e.g. ot_find_place, ot_destinations, ot_search_filters) have clearly separated inputs and outputs, and descriptions explicitly state next steps.
All tools use a consistent `ot_` prefix and snake_case naming, making them predictable and readable. There is a minor deviation between action-style names such as `ot_find_place` / `ot_search_rooms` and mostly noun-resource names such as `ot_room`, `ot_reviews`, and `ot_holidays`.
Fifteen tools is within the well-scoped range and appropriate for a rich accommodation-search domain. Each tool covers a meaningful capability, from discovery through room details, pricing, reviews, host checks, and travel context.
The read-only research surface is comprehensive: it covers destination discovery, search, filters, room details, reviews, host data, availability calendar, price quotes, holidays, late checkout, help, and travel guides. The main gap is that there is no booking/reservation or account-related operation, though the server appears intentionally focused on search and information retrieval.
Maintenance
Related MCP Connectors
Official MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.
Hotel booking MCP server. Search, book, and manage reservations across 250K+ properties worldwide.
Vacation rental discovery, direct booking, and property protection for AI agents.
Hostfully MCP server for ChatGPT, Claude and any AI agent: list reservations, get reservation, accept booking request, send guest message, read Central Calendar and list properties in your own Hostfully account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Hostfully yourself; Cotlet does not store your password and you need no Hostfully API key. About the official Hostfully API: Hostfully has an official REST API, the Open API v3, and no official MCP server (checked 31 Oct 2026). It is a paid add-on: you email api@hostfully.com with your use case, test in a sandbox, and only then get production access. Setup and FAQ: https://cotlet.dev/integrations/hostfully-api-mcp-server
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI assistants to search and compare vacation rentals across Jabama, Jajiga and Otaghak at once, normalizing prices, Jalali/Gregorian dates, amenities, ratings, calendars and full guest reviews into one schema. It runs read-only and locally, providing merged results with direct booking links while withholding host and reviewer identities.627 npm3MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search Jabama stays, group tours, events and theater seats, and to fetch the exact night-by-night price for given dates and guests along with calendars, house rules, amenities, host reputation and reviews. Runs locally as a read-only server with no login, booking or payment.235 PyPI2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to compare and find the cheapest domestic and international flights, hotels, villas, trains and buses in Iran, with exact Toman prices, fare and cancellation rules, baggage details, seats left and hotel reviews. Also covers CIP lounges, eSIM plans, visas and tours, and is read-only, so it never books, holds seats or pays.246 PyPI2MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search Iranian places and addresses, discover nearby or en-route places ranked by driving time, retrieve hours, photos, and reviews, reverse-geocode coordinates, and plan driving routes with live traffic through a read-only MCP interface.9205 PyPI1MIT