mrbilit-mcp
An unofficial, read-only MCP server for searching and comparing Iran travel options on MrBilit — flights, trains, buses, taxis, and hotels — with prices in Toman.
Find city, airport, station, bus/taxi city, and hotel codes with
mb_find_place, plus transport company codes withmb_companies.Search flights, including one-way/round-trip, passenger counts, cabin/airline/direct/time filters, price calendars, and fare details with baggage and refund rules.
Search trains, including classes, free seats, quotas, price calendars, exact party pricing, stops, and alternative routes when direct trains are full.
Search intercity buses with company/terminal/VIP/time filters, price calendars, and seat maps showing free and women/men seats.
Search private intercity taxis by car class and pick-up time, priced per car.
Search hotels and rooms by dates, stars, type, amenities, price, refundability, breakfast, reviews, room prices, and hotel price calendars.
Retrieve current site notices, official help-center rules/FAQ, and route or city travel guides.
It cannot log in, hold seats, book, pay, refund, or post reviews; users book on mrbilit.com.
Fetches content such as site notices, help-center guides, and travel magazine posts from MrBilit's Directus CMS instance to provide travel-planning context.
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., "@mrbilit-mcp cheapest way from Tehran to Mashhad on 20 October?"
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.
mrbilit-mcp: MrBilit MCP server for AI agents
Let your AI agent plan trips in Iran with MrBilit (مستربلیط). An unofficial, read-only MCP server for MrBilit, an Iranian travel site for flights, trains, buses, taxis and hotels: find the cheapest option on a date or over a month, see seats, baggage and refund rules, and compare hotel rooms with exact prices, 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 MrBilit (مستربلیط), an Iranian travel site: flights, trains, intercity buses, private taxis and hotels. Queries work in Persian and English; prices are in Toman.
Install:
claude mcp add mrbilit -- uvx mrbilit-mcp(stdio transport; needs Python 3.10+ and uv).Auth: none, no API key or account. Optional
MRBILIT_MCP_PROXY(HTTP proxy), only if your network cannot reach MrBilit's API servers.Access: read-only (all 22 tools carry
readOnlyHint: true). No login, seat hold, booking or payment, so no confirmation is needed before calling tools.Tools: 22, all prefixed
mb_*. Callmb_find_placefirst for the codes every search takes, then a price calendar (mb_flight_price_calendar,mb_train_price_calendar,mb_bus_price_calendar) →mb_search_flights/mb_search_trains/mb_search_buses→mb_flight_fare_details,mb_train_priceormb_bus_seats. Hotels:mb_search_hotels→mb_hotel_rooms.Use when: comparing the cheapest plane, train, bus or taxi between Iranian cities, or hotel prices, with seats and refund rules.
Do not use when: you need to book, hold a seat or pay (the user does that on mrbilit.com).
Output: compact JSON. Prices in Toman in
*_tomanfields, dates GregorianYYYY-MM-DD, ratings 0-5. Ids such asflight_id,class_idandbus_idcome from a fresh search and expire.Machine-readable:
server.json; catalog of all Iranian MCP servers: iran-mcp (TOOLS.md, servers.json, llms.txt).
Related MCP server: flytoday-mcp
Why
MrBilit (mrbilit.com, مستربلیط) sells flights, trains, intercity buses, private taxis and hotels in one place, but
each one has its own search, calendar and rules. Comparing "plane or train or bus, which day, which seat" means
a dozen page loads. An agent with mrbilit-mcp does it in one go:
You: Cheapest way to get from Tehran to Mashhad on 20 October?
Agent: calls
mb_search_flights(origin="THR", destination="MHD", date="2026-10-20"),mb_train_price_calendar(origin=1, destination=191),mb_search_buses(origin=11320000, destination=31310000, date="2026-10-20", sort="cheapest")
Mode
Cheapest option
Departs
Price (Toman)
Bus
Peyk Saba VIP, Tehran South terminal, 17 seats left
21:00, arrives 09:00
1,313,000
Train
cheapest seat of the day (price calendar)
list with
mb_search_trains760,000
Flight
Mehr Air MEH 4200, Mehrabad, 2 seats left
08:30, arrives 09:30
11,856,000
The train is cheapest; want me to list that day's trains and free seats with
mb_search_trains?
Real tool output from 2026-10-04; prices and seats change all the time. Prices are in Toman.
What it can do
Flights: domestic and international, one-way or round trip, party prices, cabin/airline/direct/time filters
Cheapest day for flights, trains and buses over weeks, and the cheapest nights of a hotel
Trains: every class with free seats, exact price for children, infants or a whole compartment, every stop
Buses and taxis: terminals, companies, VIP, seat maps with women/men seats, private door-to-door cars
Alternatives when trains are full: one-change trips, nearby stations, bus routes and airports
Hotels: available stays with prices, every hotel of a city, guest ratings and reviews, rooms and exact prices
Context: current site notices, official refund and baggage rules, help-center guides, route guides
Read-only by design: no login, no seat hold, no booking, no payment
Example prompts:
"Cheapest day to fly Tehran to Kish in the next month, and the baggage on that flight?"
"Train from Tehran to Mashhad next Friday for 2 adults and a child: which classes have seats and what's the total?"
"4-star hotels in Shiraz for 3 nights from the 20th under 3 million Toman a night, with their reviews."
"The Tehran to Tabriz train is full on Thursday. What else gets me there?"
ارزان‌ترین اتوبوس VIP تهران به اصفهان فردا شب و صندلی‌های خالی آن؟
ارزان‌ترین روز برای پرواز تهران به کیش در ماه آینده کدام است؟
هتل‌های ۴ ستاره مشهد برای سه شب با قیمت دقیق اتاق‌ها را مقایسه کن.
Quick start
You need uv. No API key or account.
claude mcp add mrbilit -- uvx mrbilit-mcpOutside Iran, if MrBilit's API does not answer, add a proxy:
claude mcp add mrbilit -e MRBILIT_MCP_PROXY=http://127.0.0.1:8080 -- uvx mrbilit-mcpSettings → Developer → Edit Config, then add:
{
"mcpServers": {
"mrbilit": { "command": "uvx", "args": ["mrbilit-mcp"] }
}
}Need a proxy? Add "env": { "MRBILIT_MCP_PROXY": "http://127.0.0.1:8080" } next to args.
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": {
"mrbilit": { "type": "stdio", "command": "uvx", "args": ["mrbilit-mcp"] }
}
}codex mcp add mrbilit -- uvx mrbilit-mcpOr in ~/.codex/config.toml:
[mcp_servers.mrbilit]
command = "uvx"
args = ["mrbilit-mcp"]Add to ~/.gemini/settings.json:
{
"mcpServers": {
"mrbilit": { "command": "uvx", "args": ["mrbilit-mcp"] }
}
}Add the Claude Desktop block to ~/.codeium/windsurf/mcp_config.json.
It's a standard stdio MCP server: run uvx mrbilit-mcp, or pip install mrbilit-mcp and run mrbilit-mcp.
Then ask the prompts above, in Persian or English.
Tools
Every search takes the codes from mb_find_place: IATA codes for flights (THR, MHD, ISTALL), station ids for
trains (Tehran 1, Mashhad 191), 8-digit city ids for buses and taxis (Tehran 11320000), slugs for hotels
(mashhad, mashhad/enghelab).
Tool | What it does |
| City, airport, station or hotel name → the code each search takes (flight, train, bus, taxi, hotel) |
| Airlines, rail operators, bus companies and taxi classes with their codes |
Tool | What it does |
| Flights on a date, one-way or round trip, domestic or international: price per adult and party total, seats, baggage; cabin, airline, direct and time filters |
| Cheapest fare per day over up to 180 days |
| One flight or round-trip package's fares: refund penalties, checked baggage, fare rules, notes, adult/child/infant prices |
Tool | What it does |
| Trains on a date with every class, price per adult and fresh free-seat counts; men/women/general/car quotas |
| Cheapest bookable train per day |
| Exact price of a class for adults, children, infants, foreigners and empty berths, with the total |
| Every stop of a train with date and time |
| Trips with one change (any mix of train and bus) and nearby train, bus and flight routes |
Tool | What it does |
| Buses on a date: company, terminal, times, price per seat, free seats, VIP, stops, refund penalties |
| Cheapest bus seat per day |
| Seat map: free seats, seats sold to women and men, row layout with the aisle |
| Private door-to-door intercity taxis, price per car, by class and pick-up slot |
Tool | What it does |
| Available hotels in a city for dates with the cheapest stay price and cover photo; stars, type, price, refund, amenity (Persian words, e.g. |
| One hotel: cover photo, rating, latest reviews with per-criterion scores, location, landmarks, rules, amenities |
| Every room with its exact price for the dates, per night, rooms left, meals |
| Cheapest one-night price per night, up to ~48 nights ahead |
| Every hotel of a city, sold out ones included, filtered by stars, type or name (no prices) |
Tool | What it does |
| Notices MrBilit shows right now for a service or route |
| Search the official rules, FAQ and help-center guides (refunds, baggage, auto-reserve, ...) |
| Route or city guide (summary, FAQ, article) and travel-magazine posts |
All 22 tools are annotated readOnlyHint: true and return compact structured JSON, so they don't flood the agent's context.
How it works
AI agent (Claude, Cursor, Copilot, ...)
│
│ MCP over stdio
▼
mrbilit-mcp (runs on your machine)
│
│ HTTPS (REST, optional proxy)
├──────▶ flight.atighgasht.com, train.mrbilit.com, masir.mrbilit.com, bus.mrbilit.ir, hotel.mrbilit.ir
└──────▶ content.mrbilit.ir, directus.mrbilit.ir, mrbilit.com (site lists, magazine)mrbilit-mcp runs locally and calls the same public endpoints the mrbilit.com website uses. There's no hosted
server in between, no API key, and nothing about you is sent anywhere else.
Good to know
Prices are in Toman in every tool (the API sends Rial; values are divided by 10), always in fields named
*_toman. Flightprice_tomanis per adult andtotal_tomanthe whole party; trains per adult; buses per seat; taxis per car; hotels the whole stay for one room.Dates in and out are Gregorian
YYYY-MM-DD; past dates are rejected. Times are local to the place: a flight time at a foreign airport is that airport's local time, although the API puts+03:30on every flight time.Ratings are 0–5;
nullmeans not rated. The site shows hotel ratings ×2 out of 10.Ids expire:
flight_id,class_idandbus_idcome from a fresh search.Sales windows: trains open about 18 days ahead, buses about a month. An empty result often just means "not on sale yet".
Round trips: domestic flights are two separate tickets (two lists); international round trips are priced as one package.
Hotel prices do not depend on the guest count: pick rooms whose
sleepsfits, and add rooms up for a group.Domestic airports and train stations come from the site's own bundled lists, fetched once per run with a copy shipped in the package as a fallback.
Bus and taxi cities come from MrBilit's live city lists, which are fresher than the bundled copies.
Untrusted text: reviews (cut at 400 characters), rules, notices and guides are site content; the server tells the agent to treat them as data, not instructions.
What it does not do: no login or OTP, seat hold, booking, payment, wallet, refund, coupon, price alert or review posting. You book on mrbilit.com.
Reply size: results are compact JSON, kept to roughly 15 KB by default.
Request rate: at most two requests at a time with a short random delay, because the API hosts share one server.
FAQ
mrbilit-mcp is an unofficial MCP server for MrBilit: it exposes the public endpoints of the mrbilit.com website
as 22 read-only tools, so an agent can compare flights, trains, buses, taxis and hotels.
Install it with uvx mrbilit-mcp (see Quick start), then ask in Persian or English, for example
"cheapest way from Tehran to Mashhad on 20 October, plane, train or bus".
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.
Usually not: direct calls from an Iranian connection work. If your network cannot reach MrBilit's API servers
(connections time out or are reset), set MRBILIT_MCP_PROXY to an HTTP proxy that can reach them.
System proxy variables (HTTPS_PROXY, ...) are ignored on purpose.
No, and that's deliberate. It has no login and never holds a seat, reserves, orders or pays. The agent finds the best option; you book on mrbilit.com.
The server retries timeouts, resets, 5xx and 429 twice with backoff. If it keeps failing, set MRBILIT_MCP_PROXY (see above). The one-change
trip search (mb_alternative_routes) is known to hang now and then; it is retried and its other parts are still returned.
The pricing endpoint prices any class; availability comes from mb_search_trains (seats_left, bookable).
Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.
npx @modelcontextprotocol/inspector uvx mrbilit-mcpConfiguration
Variable | Default | Meaning |
| unset | HTTP proxy for every request, e.g. |
Safety and network
Read-only: no login or OTP, no seat hold, reservation, order, payment, wallet, price alert or review posting. The only POSTs are searches and price lookups the site itself makes before booking.
Admin fields (
created_by,updated_by) of the content CMS are never passed through.Sends a real Chrome TLS fingerprint and headers (via curl_cffi) and at most two requests at a time with a short random delay, since the API hosts share one server.
If MrBilit serves a bot-check page, the server can clear it in a headless browser:
pip install mrbilit-mcp[browser], thenpatchright install chromium.
فارسی: سرور MCP مستربلیط
mrbilit-mcp یک سرور MCP غیررسمی و فقط‌خواندنی برای مستربلیط است؛ سامانه فروش بلیط هواپیما، بلیط قطار، بلیط اتوبوس، تاکسی بین‌شهری و رزرو هتل در ایران. این سرور به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد ارزان‌ترین پرواز، قطار، اتوبوس یا تاکسی دربستی را برای یک روز یا یک ماه پیدا کند، صندلی‌های خالی، بار مجاز و قوانین استرداد را ببیند و هتل‌ها را با قیمت دقیق اتاق و نظرات مسافران مقایسه کند.
چه کارهایی می‌کند
پرواز: داخلی و خارجی، یک‌طرفه یا رفت و برگشت، با فیلتر ایرلاین، کلاس پروازی و ساعت.
ارزان‌ترین روز برای پرواز، قطار و اتوبوس در چند هفته، و ارزان‌ترین شب هتل.
قطار: همه رده‌ها با صندلی خالی، قیمت دقیق بزرگسال، کودک و نوزاد، و ایستگاه‌های مسیر.
اتوبوس و تاکسی: ترمینال، شرکت، نقشه صندلی با صندلی خانم‌ها و آقایان، و تاکسی دربستی.
مسیر جایگزین وقتی قطار پر است: سفر با یک تعویض، ایستگاه‌ها و مسیرهای نزدیک.
هتل: هتل‌های دارای اتاق خالی با قیمت، امتیاز و نظرات مسافران، و قیمت دقیق هر اتاق.
اعلامیه‌ها و راهنما: اطلاعیه‌های سایت، قوانین استرداد و بار مجاز، راهنمای مسیرها.
نکته‌ها
فقط خواندنی است: وارد حساب نمی‌شود و صندلی رزرو، بلیط صادر یا پرداخت انجام نمی‌دهد؛ خرید را خودتان در سایت مستربلیط انجام می‌دهید.
همه قیمت‌ها به تومان است و تاریخ‌ها میلادی (
YYYY-MM-DD) هستند.کلید API لازم نیست؛ روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.
در ایران معمولاً نیازی به پروکسی نیست؛ اگر سرورهای مستربلیط پاسخ ندادند،
MRBILIT_MCP_PROXYرا تنظیم کنید.برای پیدا کردن آن در گوگل یا رجیستری MCP، «سرور MCP مستربلیط»، «ارزان‌ترین بلیط هواپیما»، «بلیط قطار»، «بلیط اتوبوس»، «رزرو هتل» یا «mrbilit mcp» را جستجو کنید.
نصب در Claude Code:
claude mcp add mrbilit -- uvx mrbilit-mcpدر Claude Desktop، Cursor و بقیه برنامه‌ها همان تنظیم بخش Quick start را بگذارید. بعد بپرسید: «ارزان‌ترین راه رفتن از تهران به مشهد در ۲۸ مهر چیست؟»
Development
git clone https://github.com/sepehr071/mrbilit-mcp && cd mrbilit-mcp
uv sync
uv run ruff check . && uv run ruff format --check .
uv run python -m pytest -q # offline, against recorded responses
uv run python -m pytest -m live -q # real API (set MRBILIT_MCP_PROXY if needed)
uv buildTools live in src/mrbilit_mcp/places.py, flights.py, trains.py, buses.py, hotels.py and content.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
iran-mcp: catalog of all Iranian-service MCP servers
flytoday-mcp for flights, hotels, trains and buses on Flytoday
jabama-mcp for villas, tours and events on Jabama
otaghak-mcp for villa, cottage and apartment stays on Otaghak
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 MrBilit. It is read-only and uses the public endpoints of the mrbilit.com website, which can change without notice. 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
22 toolsmb_alternative_routesAlternative routesARead-onlyIdempotent
Alternatives when direct trains are full or dear: trips with one change, and nearby train, bus and flight routes.
with_one_change: up to 7 journeys with one change, any mix of train and bus (price per adult). nearby_*: routes near the two stations with the cheapest price where known (classes_listed is a raw count, not bookable classes); pass their ids to mb_search_trains, mb_search_buses or mb_search_flights. Seat counts here can be cached: confirm with a search.
Inputs: date (required), origin (required), destination (required).
mb_bus_price_calendarBus price calendarARead-onlyIdempotent
Cheapest bus seat per day for a route; days without buses (or not on sale yet) are left out.
Then mb_search_buses for the chosen day.
Inputs: origin (required), destination (required), days, seats, +1 more.
mb_bus_seatsBus seat mapARead-onlyIdempotent
Seat map of one bus: free seat numbers, seats sold to women and to men, and a row-by-row layout.
layout: one line per row from the front; seat = number + mark (none free, w woman, m man, x not sold online); '|' aisle, '--' no seat, 'DR' driver. price_toman is null for most buses: use the search price.
Inputs: bus_id (required).
mb_city_hotelsAll hotels of a cityARead-onlyIdempotent
Every listed hotel of a city, sold out ones included, with stars, rating and address; no prices.
Filters apply to one page of 90 hotels at a time, so check pages. Prices:
mb_search_hotels or mb_hotel_calendar.
Inputs: city (required), name, page, limit, +2 more.
mb_companiesTransport companiesARead-onlyIdempotent
List airlines (IATA code), rail operators or bus companies (id) with Persian and English names.
Use to name a code seen in results or to find a code for the airlines filter. Bus ids
276/278/280 are the taxi classes VIP/Economy/Formal.
Inputs: mode (required), limit, query.
mb_find_placeFind place codesARead-onlyIdempotent
Turn a city, airport, station or hotel name into the code a search takes.
flight: airports (Iranian IATA codes; Tehran is THR; prefer to XXXALL for domestic routes)
and cities (any country; XXXALL = all its airports). train: station ids. bus / taxi: 8-digit
city ids (11320000 = Tehran, all terminals). hotel: city and hotel slugs.
Inputs: mode (required), query (required), limit.
mb_flight_fare_detailsFlight fare detailsARead-onlyIdempotent
Every fare of one flight with refund penalties, confirmed baggage, fare rules, notes and per-passenger prices.
Re-runs the mb_search_flights search (same route, date, party). refund_penalties: penalty percent per window before departure, refund = paid x (100 - penalty_pct) / 100.
Inputs: date (required), origin (required), flight_id (required), destination (required), +5 more.
mb_flight_price_calendarFlight price calendarARead-onlyIdempotent
Cheapest one-adult fare per day for a route over a date range, in one call.
Then call mb_search_flights for the chosen day. Values are cached minimums and can differ from a live search; days with no known fare are left out.
Inputs: origin (required), destination (required), days, start_date.
mb_helpHelp center searchARead-onlyIdempotent
Search MrBilit's official rules, FAQ and help-center guides; returns the best matching passages.
Use for refund, cancellation, ID and baggage rules. Rules of one fare are in mb_flight_fare_details / mb_search_trains / mb_search_buses instead.
Inputs: query (required), limit, source, full_text.
mb_hotelHotel detailsARead-onlyIdempotent
One hotel: stars, guest rating (0-5) and latest reviews, location, landmarks, check-in rules, amenities, FAQ.
landmarks: distance in km (drive minutes). Review text is cut at 400 characters unless
full_text. hotel is null after a numeric id: get the 'city/hotel' ref from
mb_find_place(mode='hotel'). Prices: mb_hotel_rooms, mb_hotel_calendar.
Inputs: hotel (required), reviews, full_text.
mb_hotel_calendarHotel price calendarARead-onlyIdempotent
Cheapest one-night room price per night from today, up to about 48 days (often fewer).
Then mb_hotel_rooms for exact prices. Nights missing inside the range have no free room; nights after the last one are not loaded yet.
Inputs: hotel (required).
mb_hotel_roomsHotel rooms and pricesARead-onlyIdempotent
Every room of a hotel with its exact price for the dates: whole stay, per night, rooms left, meals.
price_toman is the whole stay for one room after discount (independent of guest count: choose rooms whose sleeps fits). rooms_left 0 = full. Empty rooms = nothing free (try mb_hotel_calendar).
Inputs: hotel (required), check_in (required), check_out (required), guests.
mb_noticesSite noticesARead-onlyIdempotent
Notices MrBilit currently shows on its pages (disruptions, rule changes, payment options), for a service or route.
Route codes build the site path the notices match (/flights/THR-MHD, /trains/tehran-mashhad, /hotel/mashhad). site_wide_active counts every active notice. Use before recommending a trip.
Inputs: origin, service, destination.
mb_search_busesSearch busesARead-onlyIdempotent
Intercity buses on a date: company, terminal, times, price per seat, free seats, bus type, stops, refund penalties.
A city id covers all its terminals. price_toman is per seat. Top-level refund_penalties apply to every bus unless a bus lists its own (until_hours_before: step applies until then, null = up to departure). Next: mb_bus_seats with a bus_id; other days: mb_bus_price_calendar.
Inputs: date (required), origin (required), destination (required), sort, +6 more.
mb_search_flightsSearch flightsARead-onlyIdempotent
Search flights for a date: every bookable flight with price, seats left, baggage and times.
price_toman is one adult's fare (taxes included); total_toman the whole party. Domestic round
trips come back as two lists (outbound, return); international ones as packages priced
for both ways. Unpriced flights are only counted in not_on_sale. Next: mb_flight_fare_details
with the flight_id; to pick the day first, mb_flight_price_calendar.
Inputs: date (required), origin (required), destination (required), sort, +10 more.
mb_search_hotelsSearch hotelsARead-onlyIdempotent
Hotels and stays with a free room in a city for the dates, with the cheapest room price for the whole stay.
price_toman is the cheapest room for all nights (one room, after discount); cheapest_room_sleeps is how many that room sleeps (often 1). Guest count does not change prices: pick a fitting room with mb_hotel_rooms(guests=...). Next: mb_hotel, mb_hotel_rooms, mb_hotel_calendar.
Inputs: city (required), check_in (required), check_out (required), sort, +7 more.
mb_search_taxisSearch intercity taxisARead-onlyIdempotent
Private door-to-door intercity taxis (whole car, up to 3 passengers) for a date, one offer per pick-up slot.
price_toman is for the whole car. Many city pairs have no taxis (e.g. Tehran-Mashhad).
Inputs: date (required), origin (required), destination (required), limit, +3 more.
mb_search_trainsSearch trainsARead-onlyIdempotent
Trains between two stations on a date with every class (wagon), its price per adult and free seats.
price_toman is per adult; for children, infants or a compartment call mb_train_price with the class_id. Top-level refund_penalties apply to every class unless it lists its own. Stops: mb_train_stops. No seats: mb_train_price_calendar or mb_alternative_routes. A round trip is two calls (return leg with outbound_class_id).
Inputs: date (required), origin (required), destination (required), sort, +4 more.
mb_train_priceTrain ticket priceARead-onlyIdempotent
Exact price of one train class for a party: per adult, child, infant, foreigner and empty berth, and the total.
A sold-out class still returns a price: check seats_left in the search first. The breakdown does not add up exactly to the price; the price is what is paid.
Inputs: class_id (required), adults, infants, children, +2 more.
mb_train_price_calendarTrain price calendarARead-onlyIdempotent
Cheapest train ticket per day (one adult) for a route, only days with free seats.
Then mb_search_trains for the chosen day. Sales open about 18 days ahead.
Inputs: origin (required), destination (required), days, quota, +2 more.
mb_train_stopsTrain stopsARead-onlyIdempotent
Every station a train stops at, in order, with the date and local time at each.
Takes a class_id, never a train number. The first stop can be before your station.
Inputs: class_id (required).
mb_travel_guideTravel guideARead-onlyIdempotent
MrBilit's guide for a route or city (summary, FAQ, article) and matching travel-magazine posts.
Route guide: service + origin + destination (flight IATA codes, train/bus English slugs such as 'tehran'; hotel: destination city slug only). Magazine: query. Quoted prices can be out of date.
Inputs: limit, query, origin, service, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 22 tools
Most tools target a distinct resource+action (search_flights vs flight_price_calendar vs flight_fare_details), and descriptions explicitly state boundaries and hand-offs. The main overlaps are mb_search_hotels vs mb_city_hotels (both enumerate hotels in a city) and the trio mb_help / mb_travel_guide / mb_notices, which all return informational content and require reading descriptions to choose correctly.
A consistent mb_ prefix and a predictable per-domain scheme (search_X, X_price_calendar, X_details) runs through flights, trains, buses and hotels. Minor deviations: mb_hotel_calendar drops the 'price' that its siblings carry, and hotel tools mix noun-only names (mb_hotel, mb_hotel_rooms) with verb forms (mb_search_hotels, mb_city_hotels).
22 tools is on the heavy side, but they span five verticals (flights, trains, buses, taxis, hotels) plus shared lookups, giving roughly four tools per domain with each earning a role. Nothing is obviously redundant, though the surface is close to the upper bound of what an agent can hold in context.
For a read-only search/reference server the lifecycle is well covered: search, price calendar, fare/room/seat detail, alternatives, plus cross-cutting helpers (mb_find_place, mb_companies, mb_help, mb_notices, mb_travel_guide). Gaps are modest — taxis have only a single search tool with no calendar or detail view, and there is no explicit station/terminal enumeration beyond mb_find_place.
Maintenance
Related MCP Connectors
Travel tools for AI agents: plan and edit real trips, search stays and tours, import travel videos.
Give AI assistants access to real-time data. Search the web, compare flights, find hotels, and more.
Airbnb, hotel and TripAdvisor search as agent tools.
Live flight prices and working booking links for AI agents and travel apps.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to search Iranian villas, cottages, and apartments, check nightly availability, calculate exact stay totals for dates and guests, and read reviews and host statistics. It is a read-only stdio MCP server with no login, booking, payment, or SMS endpoints.15208 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
- AlicenseAqualityBmaintenanceEnables AI agents to search Iranian places, read place details, reviews, photos and menus, find nearby places, reverse geocode coordinates, check air quality, and get car, motorcycle, bicycle, walking or bus/metro directions, travel times and Tehran traffic-zone status without an API key.11208 PyPIMIT