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

🏡 jabama-mcp: Jabama MCP server for AI agents

Unofficial, read-only MCP server for Jabama (جاباما): let your AI agent plan stays in Iran.
Search villas, suites and eco-lodges with the exact price for your dates and guests, read rules and reviews,
and find group tours, events and theater seats, 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 Jabama (جاباما), the Iranian short-term rental site, plus its tour and event sites. Place names must be in Persian (the agent translates English ones); prices are in Toman.
  • Install: claude mcp add jabama -- uvx jabama-mcp (stdio transport; needs Python 3.10+ and uv).
  • Auth: none, no API key. Optional JABAMA_MCP_PROXY (HTTP proxy) if Jabama blocks your network.
  • Access: read-only. No login, booking, seat holds or payment, so no confirmation is needed before calling tools.
  • Tools: 21, all prefixed jb_*. Start with jb_find_destination (or jb_parse_request for free text), then jb_search_stays → jb_stay_calendar → jb_price_quote. Tours: jb_tour_places → jb_search_tours → jb_tour. Events: jb_search_events → jb_event → jb_event_seats.
  • Use when: comparing stays, tours, events or theater seats in Iran, or computing the exact total for dates and guests.
  • Do not use when: you need to book, pay or hold a seat (the user does that on the site).
  • Output: compact JSON. Prices in Toman, dates Gregorian YYYY-MM-DD, ratings 0-5. Pass the numeric listing code (tours: 8-digit id) between tools.
  • Machine-readable: server.json; catalog of all Iranian MCP servers: awesome-iran-mcp (TOOLS.md, servers.json, llms.txt).

Why use Jabama MCP

On Jabama (jabama.com) a search card shows one price, but the real cost of a stay depends on the nights you pick (weekends and holidays are priced differently), how many guests come (every guest above the base count adds a nightly charge) and long-stay discounts. An agent with jabama-mcp reads the search, the nightly calendar and the site's own price quote, so the number it gives you is the number you pay:

You: A cheap eco-lodge near Ramsar for 4 people, 20 to 23 October?

Agent: calls jb_find_destination(query="رامسر") → jb_search_stays(keyword="city-ramsar", check_in="2026-10-20", check_out="2026-10-23", guests=4, types=["ecotourism"], sort="cheapest") → jb_price_quote(code=328353, check_in="2026-10-20", check_out="2026-10-23", guests=4)

Night Type Night price 2 extra guests Total
20 Oct weekday 600,000 300,000 900,000
21 Oct weekend 520,000 300,000 820,000
22 Oct weekend 520,000 300,000 820,000

نسا - افرا in Tonekabon: 2,540,000 Toman for 3 nights and 4 guests (or 4 parts of 635,000). The host must accept the booking first; cancelling up to 24 Mehr costs 10% of the first night and 10% of the rest.

Real tool output from 2026-10-04; prices change all the time. Prices are in Toman.

What it can do

  • 📍 Find a place: Persian city, area or landmark names (a beach, a mall, an airport) to search filters
  • 🗣️ Understand a request: free text like «ویلای استخردار در رامسر برای ۶ نفر» becomes filters, with Jabama's own AI parser
  • 🔎 Search stays by dates and guests with type, amenities, region, rooms, price, instant booking and rating filters
  • 🧾 Get the exact price for dates and guests, night by night, with discounts and the cancellation windows
  • 📅 See the calendar: free nights and nightly prices for the next ~76 days, with weekends and holidays
  • ⭐ Check quality: house rules, amenities (and what is missing), reviews, host reputation, similar stays
  • 🚌 Group tours (jabama.tours): search, departures with free seats and per-package prices, day plans
  • 🎭 Events and theater (jabama.events): what is on, sessions, seats left, free seats by row and price
  • 🔒 Read-only by design: no login, no booking, no seat holds, no payment

Quick start

You need uv.

Claude Code
claude mcp add jabama -- uvx jabama-mcp
Claude Desktop

Settings → Developer → Edit Config, then add:

{
  "mcpServers": {
    "jabama": { "command": "uvx", "args": ["jabama-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": {
    "jabama": { "type": "stdio", "command": "uvx", "args": ["jabama-mcp"] }
  }
}
Anything else

It's a standard stdio MCP server: run uvx jabama-mcp, or pip install jabama-mcp and run jabama-mcp.

Then just ask:

  • "Cheapest villa with a pool in Ramsar for 6 people next weekend, and the exact total?"
  • "Which nights is this cottage free in November, and which are cheapest?"
  • "A one-day nature tour from Tehran this month, with free seats for 3."
  • "What's on in Tehran on Friday evening under 500,000 Toman? Show the free seats."
  • قوانین کنسلی جاباما چیست و چقدر از پول برمی‌گردد؟

How it works

  AI agent  (Claude, Cursor, Copilot, ...)
      │
      │  MCP over stdio
      ▼
  jabama-mcp  (runs on your machine)
      │
      │  HTTPS (JSON)
      ├──────▶  gw.jabama.com, www.jabama.com   (stays, help, magazine)
      ├──────▶  api.jabama.tours                 (group tours)
      └──────▶  api.jabama.events, jabama.events (events, theater)

jabama-mcp runs locally and calls the same public endpoints the Jabama websites use. There's no hosted server in between, no API key, and nothing about you is sent anywhere else.

Tools

Listings are identified by their numeric code (328353, the number in jabama.com/stay/ecotourism-328353); tours by an 8-digit id, events and plays by the id in their page URL.

🔎 Stay search (4)
Tool What it does
jb_find_destination Persian place name → ready search arguments (city, area, landmark, complex)
jb_parse_request Free-text request → search arguments, using Jabama's AI parser
jb_search_stays Search stays for dates and guests with filters, whole-stay prices, sorting
jb_categories Themed lists (special pool, luxury, cheap, jungle, pet friendly, last-minute, ...)
🏡 One stay (6)
Tool What it does
jb_stay Capacity, beds, rules, amenities and missing ones, cancellation policy, host, review scores
jb_stay_calendar Free nights and nightly prices with weekend and holiday flags (~76 days)
jb_price_quote Exact payable amount for dates and guests, night by night; unit options for complexes
jb_similar_stays Similar stays nearby (priced for your dates) and other units of the same property
jb_reviews Guest reviews, newest or best/worst first, with host replies
jb_host A host's listings and reviews across all of them
ℹ️ Help and guides (2)
Tool What it does
jb_help Jabama's rules: cancellation, refunds, payment, tax (help center + support answers)
jb_travel_guide Jabama magazine travel guides for a destination
🎭 Events and theater (6)
Tool What it does
jb_search_events Events and experiences by city, category, date, price and rating
jb_event One event: details, address, rules, sessions with seats left, reviews, organizer
jb_event_seats Free seats of a seated session by section and row, with section prices
jb_theaters Theater plays on sale: venue, from-price, rating, cast
jb_theater One play: showtimes with live seats left; free seats of a showtime
jb_event_filters Event cities and categories with counts
🚌 Group tours (3)
Tool What it does
jb_search_tours Tours by place, dates, category, tags, duration, price, difficulty, rating
jb_tour One tour: departures with free seats and package prices, day plan, inclusions, cancellation, reviews
jb_tour_places Place name → place id for the tour search

All 21 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 everywhere (1 Toman = 10 Rial). The stays API answers in Rial; the server divides by 10. Tours are Toman per person, events and theater Toman per ticket (or per unit, e.g. one boat, when pricing is per_unit).
  • Stay prices are for the whole stay for the searched dates and guests (total_price); cheapest_night is the cheapest single night, not the average. Without dates a search prices one default night.
  • Stay cards (jb_search_stays, jb_similar_stays) carry image, the cover photo, and url; with dates the url opens the listing on those dates and guests, priced like the quote.
  • Count children as guests. The quote has no child price, so guests is everyone who stays.
  • Dates are Gregorian YYYY-MM-DD (1405-07-28 = 2026-10-20); times are Tehran local. Stays can be quoted for about the next 76 days.
  • jb_price_quote is the number to trust. It is the same read-only quote the listing page shows; it creates no booking. Quotes show no tax line; Jabama's help center says 1.5% tax is added when booking.
  • Instant vs request: instant_booking: false means the host must accept first. instant_only keeps only instant listings.
  • Tour seats: only jb_tour has correct free seats; tour lists count seats once per package.
  • Ratings are 0–5; null means not rated yet. Stay reviews carry only a Jalali month, not a date.

FAQ

Is there a Jabama API or MCP server for AI agents?

jabama-mcp is an unofficial MCP server for Jabama: it exposes the public endpoints of the Jabama websites as 21 read-only tools, so an agent can search stays, tours and events and get exact prices.

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

Install it with uvx jabama-mcp (see Quick start), then ask in Persian or English, for example "cheapest villa with a pool in 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 villa or buy a ticket for me?

No, and that's deliberate. It has no login and never calls booking, order, payment, seat-hold or wallet endpoints. jb_price_quote only asks for a price. The agent finds the best option; you book on the site.

A search with dates returns 0 results

Usually nothing is free for those dates with those filters, or the dates are past the ~76-day calendar. Try other dates or fewer filters. Dates must be Gregorian; the server rejects Jalali-looking dates instead of searching.

Do I need an Iranian IP?

No geo block was seen: direct calls and calls through a proxy in Turkey both worked (2026-10-04). Cloud servers were not tested; if Jabama blocks one, set JABAMA_MCP_PROXY.

I get "blocked the request (HTTP 403)"

Jabama's web firewall rejects requests that don't look like a browser; the server already sends a browser User-Agent. If it still happens, wait a minute, turn off a VPN, or set JABAMA_MCP_PROXY. Normal system proxy variables are ignored on purpose, because direct calls are the fastest.

The theater seat map says "not available right now"

The theater seat map comes live from Jabama's ticketing partner, which sometimes refuses for a while. The showtimes and seats_left still work; try the seat map again later or for another showtime.

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 jabama-mcp

Configuration

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

فارسی: سرور MCP جاباما

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

  • فقط خواندنی است: وارد حساب نمی‌شود، رزرو ثبت نمی‌کند، صندلی نگه نمی‌دارد و پرداخت نمی‌کند.
  • قیمت هر شب، هزینه نفر اضافه، تخفیف اقامت طولانی و قوانین کنسلی را نشان می‌دهد.
  • همه قیمت‌ها به تومان است.
  • روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.
  • برای پیدا کردن آن در گوگل یا رجیستری MCP، «سرور MCP جاباما» یا «jabama mcp» را جستجو کنید.

نصب در Claude Code:

claude mcp add jabama -- uvx jabama-mcp

بعد بپرسید: «ارزان‌ترین ویلای استخردار رامسر برای ۶ نفر از ۲۸ مهر تا ۱ آبان، با قیمت نهایی»

Development

git clone https://github.com/sepehr071/jabama-mcp && cd jabama-mcp
uv sync
uv run pytest            # offline, against recorded responses
uv run pytest -m live    # real APIs
uv run ruff check .

Tools live in src/jabama_mcp/search.py, stay.py, info.py, tours.py and events.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 Jabama. It uses the public endpoints of the jabama.com, jabama.tours and jabama.events websites, which can change without notice. Please keep request rates reasonable.

License

MIT

Metadata

Release files for jabama-mcp 0.2.2

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

Source distribution (sdist)

Source distribution for jabama-mcp 0.2.2
File Size Uploaded
jabama_mcp-0.2.2.tar.gz 484.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jabama-mcp 0.2.2
File Interpreter ABI Platform
jabama_mcp-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 525.6 kB

Release files / jabama_mcp-0.2.2.tar.gz

Download URL jabama_mcp-0.2.2.tar.gz
Size 484.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1e031225afb5ed34848a29346e2c0c5ca68e2ecb9afea369a049581caf17735d
BLAKE2b-256 checksum
How to use checksums
d9df9d929d4ffd1da805158ef9a54754b216f2378c6fa739ffcef564687c6a4b
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 / jabama_mcp-0.2.2-py3-none-any.whl

Download URL jabama_mcp-0.2.2-py3-none-any.whl
Size 41.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a235c654e9d1af789e104308b00b9cf8d522fbc6134c00cb57b1e3afdcfd784e
BLAKE2b-256 checksum
How to use checksums
8f161cd2516b87fa334d9e21af0a8d1fc8810bf4933a6f704b22efe3b4a34d66
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.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

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