# Alibaba Travel (pypi · alibaba-ir-mcp)

Read-only Alibaba (alibaba.ir) Iran travel: trains, buses, flights, hotels, villas and tours.

- Trust score: 80/100 (high trust)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `alibaba-ir-mcp`: 80/100 (this document), [markdown](https://verifymcp.io/servers/sepehr071-alibaba-ir-mcp/alibaba-ir-mcp.md), [page](https://verifymcp.io/servers/sepehr071-alibaba-ir-mcp/alibaba-ir-mcp)

## Channel facts

- Registry: `pypi`
- Package: `alibaba-ir-mcp`
- Version: `0.1.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 35 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to sepehr071/alibaba-ir-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 60/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4287 tokens (~306/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Alibaba Travel MCP server?

Alibaba Travel runs locally as a PyPI package, launched with uvx alibaba-ir-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add sepehr071-alibaba-ir-mcp -- uvx alibaba-ir-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "sepehr071-alibaba-ir-mcp": {
      "command": "uvx",
      "args": [
        "alibaba-ir-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sepehr071-alibaba-ir-mcp": {
      "command": "uvx",
      "args": [
        "alibaba-ir-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sepehr071-alibaba-ir-mcp -- uvx alibaba-ir-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sepehr071-alibaba-ir-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "alibaba-ir-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sepehr071-alibaba-ir-mcp --command uvx --arg alibaba-ir-mcp
```

### Hermes

```yaml
mcp_servers:
  sepehr071-alibaba-ir-mcp:
    command: "uvx"
    args: ["alibaba-ir-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "sepehr071-alibaba-ir-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "alibaba-ir-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add sepehr071-alibaba-ir-mcp -t stdio -c uvx -a alibaba-ir-mcp
```

### Other

```json
{
  "mcpServers": {
    "sepehr071-alibaba-ir-mcp": {
      "command": "uvx",
      "args": [
        "alibaba-ir-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 80, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-11-03 (score 64, 0)

- [security improvement] Malware scan: unverified → pass
- [functional] Package version: 0.1.1 → 0.1.2

### 2026-11-02 (score 64, −14)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.1.0 → 0.1.1

### 2026-11-01 (score 78)

First indexed and scored.

## MCP tools (14)

### `al_cities` (~200 tokens)

City and airport codes

Look up the city codes the other tools take (THR for Tehran, MHD for Mashhad) and what is sold for each city.

Use first when the user names a city: pass the returned `code` to al_trains, al_buses or al_flights.
\`train` is true for cities with a station, `flight` for cities with a domestic airport. Buses use the same
codes (a tiny train stop may have no buses). With international=true it searches the whole world (Dubai,
Istanbul, Paris) and returns airports; `whole_city` rows (code ending in ALL) cover every airport of a city.

Input parameters:

- `international` (boolean): Look up airports and cities worldwide for al_flights_international instead of Iranian cities.
- `limit` (integer): Maximum number of results.
- `query` (string): Part of a city name in Persian or English, or a code. Empty lists all.

### `al_trains` (~412 tokens)

Train tickets

Search train tickets between two Iranian cities on one day: company, class, times, price and seats left.

Use for "trains from Tehran to Mashhad on 1405-08-20". Prices are Toman per adult. `seats_left` 0 means sold out.
\`class` is the wagon name (stars, berths, meals) and `class_code` its type: S saloon seats, EC 4-berth
compartment, EL 6-berth compartment, V special. Pass return_date for the way back. Call al_trains_cheapest to
compare prices over the following days. While the rail suppliers are in their maintenance window (usually
after midnight) the site answers with an error; try again in a few minutes.

Input parameters:

- `date` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `destination` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `limit` (integer): Maximum number of results.
- `only_available` (boolean): Hide sold-out trains.
- `origin` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `passengers` (integer): Number of travellers; seats_left is for this group size.
- `return_date`: Return day for a round trip (same formats as `date`); adds a `returning` list.
- `sort` (string): Order of the results.
- `ticket_type` (string): family = mixed compartments; female or male = single-gender compartments (seat counts differ).
- `wagon_class`: Keep only this class code from the results, e.g. EC (compartment), EL (6-berth), S (saloon), V.

### `al_trains_cheapest` (~177 tokens)

Cheapest train per day

List the lowest train price for each day from a start date, to pick the cheapest day to travel.

Use before al_trains when the date is flexible. Prices are Toman per adult; a missing day has no train.

Input parameters:

- `date` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `days` (integer): How many days to list, starting at `date`.
- `destination` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `origin` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.

### `al_buses` (~218 tokens)

Bus tickets

Search intercity bus tickets between two Iranian cities on one day: company, bus type, times, price, seats.

Use for "buses from Tehran to Shiraz tomorrow". Prices are Toman per adult. `from_terminal` is the terminal of
that departure (Tehran has several). Bus tickets carry no arrival time on the site.

Input parameters:

- `date` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `destination` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `limit` (integer): Maximum number of results.
- `only_available` (boolean): Hide buses with no free seat.
- `origin` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `sort` (string): Order of the results.

### `al_buses_cheapest` (~203 tokens)

Cheapest bus per day

List the lowest bus price and the number of buses for each day from a start date (the site has no bus calendar).

Use before al_buses when the date is flexible. It runs one search per day, so keep `days` small. Prices are
Toman per adult for buses with a free seat; a day with none shows no price.

Input parameters:

- `date` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `days` (integer): How many days to check, starting at `date`.
- `destination` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `origin` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.

### `al_bus_seats` (~262 tokens)

Bus seat map

Show which seats are free on one bus: counts per status and the free seat numbers (no booking).

Use after al_buses when the user cares where they sit or asks how full a bus is. Pick the bus by its departure
time (and company). `layout` gives each seat's row and column (columns 1-2 left of the aisle, 4-5 right) so
pairs can be found; statuses mean Available, booked for a male or female passenger, or Blocked (not for sale).

Input parameters:

- `company`: Part of the company name, to pick one when several buses leave at that time.
- `date` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `departure_time` (string, required): Departure time of the bus from al_buses, HH:MM.
- `destination` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `origin` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.

### `al_flights` (~375 tokens)

Domestic flights

Search domestic flights between two Iranian airports on one day: airline, flight number, times, fare, seats.

Use for "flights from Tehran to Shiraz on 2026-11-12". Prices are Toman per adult (`child_price_toman` and
\`infant_price_toman` for the others); one flight can appear several times with different fare classes. Pass
return_date for a round trip, refund_rules for the cancellation fee table, adults/children/infants for a
group. For other days call al_flights_cheapest first. For flights abroad use al_flights_international.

Input parameters:

- `adults` (integer): Number of adults.
- `children` (integer): Number of children (2-11); their fare is lower.
- `date` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `destination` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `infants` (integer): Number of infants under 2 (one per adult at most).
- `limit` (integer): Maximum number of results.
- `only_available` (boolean): Hide fares with no seat left.
- `origin` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `refund_rules` (boolean): Add `refund_penalties` (cancellation fee by time before departure) to each fare.
- `return_date`: Return day for a round trip (same formats as `date`); adds a `returning` list.
- `sort` (string): Order of the results.

### `al_flights_cheapest` (~178 tokens)

Cheapest flight per day

List the lowest domestic fare for each day from a start date, to pick the cheapest day to fly.

Use before al_flights when the date is flexible. Prices are Toman per adult; a day with no flight is missing.

Input parameters:

- `date` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `days` (integer): How many days to list, starting at `date`.
- `destination` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.
- `origin` (string, required): City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them.

### `al_flights_international` (~403 tokens)

International flights

Search international flights between Iran and abroad (or any two cities Alibaba sells) on one day.

Use for "flights from Tehran to Istanbul on 2026-11-16". Returns airline, flight numbers, times, stops, baggage
and the price per adult in Toman (`total_toman` is for the whole group); cheapest first by default. Pass
return_date for a round trip: each fare then has a `return` leg. Cities and codes come from al_cities with
international=true (THRALL = all Tehran airports). Charter fares are sold as one fare class. It can take
10-20 seconds because airlines answer one by one (at most 12 polls per call). To buy, send the user to alibaba.ir.

Input parameters:

- `adults` (integer): Number of adults.
- `airline`: Part of an airline name to keep, e.g. 'Turkish', 'ماهان'.
- `cabin` (string): Cabin class.
- `children` (integer): Number of children (2-11).
- `date` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `destination` (string, required): City or airport as a name (تهران, Dubai) or code (THR, DXB, THRALL for all airports of Tehran).
- `infants` (integer): Number of infants under 2.
- `limit` (integer): Maximum number of results.
- `max_stops`: Keep only itineraries with at most this many stops (0 = direct).
- `origin` (string, required): City or airport as a name (تهران, Dubai) or code (THR, DXB, THRALL for all airports of Tehran).
- `return_date`: Return day for a round trip (same formats as `date`).
- `sort` (string): Order of the results.

### `al_stays` (~344 tokens)

Villas and holiday homes

Search villas, suites, cottages and other holiday homes for rent in a city, with price, rating and capacity.

Use for "a villa in Masuleh for 4 people next weekend". Prices are Toman: `price_per_night_toman` is the
average for the stay, `price_total_toman` the whole stay (VAT not included). The sort applies to the first 100
places the site returns (`found` is the full count). Call al_stay_detail with an `id` for the calendar, rules
and amenities. The listings are Jabama's, sold through alibaba.ir.

Input parameters:

- `checkin` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `destination` (string, required): City or village name (ماسوله, رامسر, کیش) or a page slug like city-masuleh.
- `guests` (integer): Number of guests.
- `instant_only` (boolean): Only places you can book at once without the host's approval.
- `limit` (integer): Maximum number of results.
- `max_price`: Highest price per night in Toman.
- `min_price`: Lowest price per night in Toman.
- `min_rating`: Lowest guest rating, 0-5 (for example 4).
- `nights` (integer): Number of nights, counted from the check-in date.
- `sort` (string): Order of the results.
- `type`: Kind of place: villa, suite, traditional house, cottage, apartment, hostel, ecotourism lodge, complex.

### `al_stay_detail` (~153 tokens)

Villa or holiday home details

Show one villa or holiday home in full: capacity, beds, amenities, house rules, cancellation terms, calendar, reviews.

Use after al_stays when the user wants to decide on a place. Prices are Toman per night (`price_base` weekday,
\`price_weekend`, `price_holiday`); `calendar` lists the next days with `available` or not and the night's price.
Guest names are left out.

Input parameters:

- `calendar_days` (integer): How many days of availability and nightly prices to list from today.
- `id` (string, required): The `id` of a place from al_stays.
- `reviews` (integer): How many recent guest reviews to include (0 for none).

### `al_hotels` (~260 tokens)

Hotels

Search hotels in a city for a stay: stars, rating, price for the whole stay, meal plan, perks (domestic and abroad).

Use for "a 4-star hotel in Mashhad for 2 nights from 1405-08-21". Prices are Toman for the room for all nights
(`price_per_night_toman` is the average). The site's own page shows the same list and count. It can take up to
a few seconds while hotels answer.

Input parameters:

- `adults` (integer): Adults in the room (one room per search).
- `checkin` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `city` (string, required): City name in Persian or English (مشهد, Istanbul, دبی).
- `limit` (integer): Maximum number of results.
- `min_stars`: Lowest star rating to keep, 1-5.
- `nights` (integer): Number of nights, counted from the check-in date.
- `only_available` (boolean): Hide hotels with no room for those dates.
- `sort` (string): Order of the results: best rated first, or cheapest first.

### `al_tours` (~291 tokens)

Tour packages

Search tour packages (round trip plus hotel) from a city to a destination such as Kish, Mashhad, Istanbul or Dubai.

Use for "a 3-night Kish tour for two from Tehran next week". Each result is a hotel with the cheapest package:
hotel, stars, rating, room, meal plan, how you travel, and the price per person and for the whole group in
Toman. Results come in after a few seconds (at most 15 polls per call). To buy, send the user to alibaba.ir.

Input parameters:

- `adults` (integer): Travellers sharing one room (the price is for the whole group).
- `checkin` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `destination` (string, required): Destination city in Persian or English: کیش, Mashhad, استانبول, Dubai.
- `limit` (integer): Maximum number of results.
- `max_price`: Highest price per person in Toman.
- `min_stars`: Lowest hotel star rating to keep, 1-5.
- `nights` (integer): Number of nights, counted from the check-in date.
- `origin` (string): Departure city, tours start from Tehran, Isfahan, Mashhad and a few more.
- `sort` (string): Order of the results.

### `al_tours_cheapest` (~183 tokens)

Cheapest tour per day

List the lowest tour price per person for 11 departure days around a date (5 before, 5 after), to pick the cheapest day.

Use before al_tours when the date is flexible. Prices are Toman per person for a tour of `nights` nights; a day
without tours is missing. Then call al_tours for the chosen day.

Input parameters:

- `checkin` (string, required): Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which).
- `destination` (string, required): Destination city in Persian or English: کیش, Mashhad, استانبول, Dubai.
- `nights` (integer): Number of nights, counted from the check-in date.
- `origin` (string): Departure city (Tehran, Isfahan, Mashhad and a few more).

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/sepehr071-alibaba-ir-mcp/alibaba-ir-mcp#diagnostics

## Score history

- 2026-11-05: 80
- 2026-11-04: 80
- 2026-11-03: 64
- 2026-11-02: 64
- 2026-11-01: 78

## Common questions

### What is the Alibaba Travel MCP server?

Alibaba Travel is an MCP server listed in the public MCP registry as io.github.sepehr071/alibaba-ir-mcp. Read-only Alibaba (alibaba.ir) Iran travel: trains, buses, flights, hotels, villas and tours. This page covers its PyPI package (alibaba-ir-mcp).

### Is the Alibaba Travel MCP server safe to use?

Alibaba Travel scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Alibaba Travel MCP server expose?

Alibaba Travel exposes 14 tools: al_cities, al_trains, al_trains_cheapest, al_buses, al_buses_cheapest, and 9 more. Their descriptions and schemas cost roughly 3,659 tokens of context every time the server is loaded.

### Is the Alibaba Travel MCP server still maintained?

Alibaba Travel is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Alibaba Travel MCP server under?

Alibaba Travel declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/alibaba-ir-mcp/
- Socket report: https://socket.dev/pypi/package/alibaba-ir-mcp
- Repository: https://github.com/sepehr071/alibaba-ir-mcp
- Changelog RSS feed: https://verifymcp.io/servers/sepehr071-alibaba-ir-mcp/alibaba-ir-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/sepehr071-alibaba-ir-mcp/alibaba-ir-mcp.json
- HTML version of this page: https://verifymcp.io/servers/sepehr071-alibaba-ir-mcp/alibaba-ir-mcp
