
MrBilit
io.github.sepehr071v0.1.1更新於 Oct 5, 2026
Unofficial read-only MrBilit: Iranian flights, trains, buses, taxis and hotels, seats and prices.
概覽
讓助理查詢伊朗的航班、火車、巴士、計程車與飯店,取得座位、價格與規則,且為唯讀。
- 功能
- 這是一套以 MrBilit 公開旅遊端點為基礎的非官方唯讀 MCP 伺服器。它提供 22 個工具:地點與公司代碼查詢、航班搜尋與票價日曆、火車班次與艙等剩餘座位、巴士與私人計程車搜尋及座位圖、飯店搜尋與房型評價,以及公告、說明文件與旅遊指南(R47-R81)。所有工具都標註 readOnlyHint,並回傳精簡的結構化 JSON(R82)。價格以托曼回傳(R84)。
- 適用情境
- 當你希望助理比較伊朗境內的交通選項時使用,例如查詢兩地之間最便宜的航班、火車或巴士日期,查看剩餘座位、行李與退改規則,或比較飯店的確切房價(R2、R40-R42)。它只用於查詢與比較,訂票需在 MrBilit 網站完成(R103)。
- 執行需求
- 以 uvx(或 pip install mrbilit-mcp)在本機執行的程序,需要 Python 與 uv(R27、R38)。不需要帳號、登入或 API 金鑰(R46)。需要能連線到 MrBilit 的 API 主機;在伊朗境外或連線逾時時,可設定選用環境變數 MRBILIT_MCP_PROXY 指向 HTTP 代理(R29、R97-R98)。僅支援桌面端。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 MrBilit,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
✈️ mrbilit-mcp
Let your AI agent plan trips in Iran with MrBilit.
Find the cheapest flight, train, bus or private taxi on a date or over a month, see seats, baggage and refund rules,
and compare hotels with exact room prices, 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
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")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
Quick start
You need uv.
Claude Code
Outside Iran, if MrBilit's API does not answer, add a proxy:
Claude Desktop
Settings → Developer → Edit Config, then add:
Need a proxy? Add "env": { "MRBILIT_MCP_PROXY": "http://127.0.0.1:8080" } next to args.
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:
Anything else
It's a standard stdio MCP server: run uvx mrbilit-mcp, or pip install mrbilit-mcp and run mrbilit-mcp.
Then just ask:
- "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."
- ارزانترین اتوبوس VIP تهران به اصفهان فردا شب و صندلیهای خالی آن؟
How it works
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.
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).
📍 Places and companies (2)
✈️ Flights (3)
🚆 Trains (5)
🚌 Buses and taxis (4)
🏨 Hotels (5)
📢 Notices and help (3)
All 22 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 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.
FAQ
Do I need a proxy?
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.
Can it book a ticket for me?
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.
I get "did not answer in time" or "Could not reach"
The server retries a reset connection once. 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.
Why does a sold-out train class still have a price in mb_train_price?
The pricing endpoint prices any class; availability comes from mb_search_trains (seats_left, bookable).
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?
Configuration
Safety
- 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. - Always sends a browser User-Agent and at most two requests at a time, since the API hosts share one server.
فارسی
mrbilit-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه میدهد در مستربلیط ارزانترین پرواز، قطار، اتوبوس یا تاکسی دربستی را برای یک روز یا یک ماه پیدا کند، صندلیهای خالی، بار مجاز و قوانین استرداد را ببیند و هتلها را با قیمت دقیق اتاق و نظرات مسافران مقایسه کند.
- فقط خواندنی است: وارد حساب نمیشود و صندلی رزرو یا بلیط صادر نمیکند.
- همه قیمتها به تومان است.
- روی سیستم خود شما اجرا میشود و به هیچ سرور واسطی داده نمیفرستد.
- در ایران معمولاً نیازی به پروکسی نیست؛ اگر سرورهای مستربلیط پاسخ ندادند،
MRBILIT_MCP_PROXYرا تنظیم کنید.
نصب در Claude Code:
بعد بپرسید: «ارزانترین راه رفتن از تهران به مشهد در ۲۸ مهر چیست؟»
Development
Tools 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.
Disclaimer
Unofficial and not affiliated with or endorsed by MrBilit. It uses the public endpoints of the mrbilit.com website, which can change without notice. Please keep request rates reasonable.
License
來源:README.md,提交 741a226
工具
0版本歷史
1- v0.1.1最新Oct 5, 2026