Content
# Russia Travel Search MCP 🏨✈️🚂
MCP Server for travel search in Russia. Hotels, flights, trains, excursions — without API keys.
**60+ cities and 89 regional profiles**, including Crimea, Dagestan, Caucasus, Kamchatka. Hotels and excursions are taken from live JSON-LD search, flights and trains return direct search links.
## Installation
```bash
pip install mcp
git clone https://github.com/YOUR_USER/russia-travel-mcp.git
cd russia-travel-mcp
```
## Launch
```bash
python3 mcp/server.py
```
Works via stdio (MCP protocol).
### OpenClaw / Claude Desktop Configuration
```json
{
"mcpServers": {
"russia-travel": {
"command": "python3",
"args": ["mcp/server.py"],
"cwd": "/path/to/russia-travel-mcp"
}
}
}
```
## Tool List
| Tool | Description | API |
|------|-------------|-----|
| `search_hotels` | Hotels in any Russian city | Ostrovok JSON-LD (no key) |
| `search_flights` | Flights in Russia: IATA/cities, dates, 1-4 passengers | Aviasales/Yandex search links |
| `search_trains` | Train tickets | Tutu/RZD/Yandex links + route directory |
| `search_excursions` | Excursions | Sputnik8 JSON-LD |
| `search_all` | Hotels + excursions in one request | Combo |
| `lookup_sputnik8_city` | Search Sputnik8 slug/URL city | Built-in directory |
| `list_russian_cities` | All supported cities | — |
| `list_russian_regions` | Russian regions, federal districts, themes and hubs | Curated directory |
| `region_travel_profile` | Region profile: hubs, interests, objects, booking hints | Curated directory |
| `build_regional_tour` | Draft multi-day tour in a Russian region | Algorithm + directory |
| `search_region` | Preparation of hotel/excursion search by region hubs | Combo |
| `list_tour_operators` | Russian tour operators | Curated directory |
| `novgorod_hotels` | Hotels in Veliky Novgorod | Ostrovok JSON-LD + known |
| `novgorod_operators` | Novgorod tour operators | Directory |
| `novgorod_transport` | St. Petersburg ↔ Novgorod transport | Directory (buses/transfer) |
## Destinations
### Hotels (Ostrovok JSON-LD, 60+ cities)
Moscow, St. Petersburg, Kazan, Sochi, Kaliningrad, Ekaterinburg, Novosibirsk, Vladivostok, Makhachkala, Yalta, Feodosiya, Svetlogorsk, Murmansk, Irkutsk, Pskov, Pyatigorsk and dozens of others.
### Flights (search links, 70+ airports/aliases)
MOW, LED, KZN, AER, KGD, SVX, OVB, VVO, MCX, MRV, KJA, IKT, KHV, PKC, UUS and more.
### Excursions (Sputnik8, 30+ cities)
Veliky Novgorod, Moscow, St. Petersburg, Kazan, Kaliningrad, Sochi, Vladimir, Suzdal, Pskov, Yalta, Derbent, Pyatigorsk and many others.
## Examples
```python
# Hotels in Kazan up to 5000 ₽, rating from 8
search_hotels(city="Kazan", min_rating=8, max_price=5000)
# Flight Moscow–Kaliningrad, August 2026
search_flights(origin="MOW", destination="KGD", depart_date="2026-08", return_date="2026-08-15")
# Train Moscow–Simferopol
search_trains(origin="Москва", destination="Симферополь")
# Excursions in Yalta
search_excursions(city="Ялта", limit=10)
# All at once: hotels + excursions in Kaliningrad
search_all(city="Калининград", hotel_limit=5, excursion_limit=5)
# Transport St. Petersburg → Novgorod
novgorod_transport(route="spb-novgorod")
# Region profile and hubs for route
region_travel_profile(region="Новгородская область")
# Draft tour in a region
build_regional_tour(region="Дагестан", days=4, start_city="Москва", interests="горы, гастрономия")
# Search by region hubs without live scraping
search_region(region="Татарстан", include_live=False)
```
## Testing
```bash
python -m unittest discover -s tests
python -m py_compile mcp/server.py
```
## Differences from travel-search-ru
| | travel-search-ru | russia-travel-mcp |
|---|---|---|
| Focus | International tours (Turkey, Egypt) | Russia (60+ cities) |
| Proxy | `api.botclaw.ru` (closed) | Direct requests to Ostrovok/Aviasales/Sputnik8 |
| API keys | Hidden in proxy | Not required |
| Trains | No | Yandex.Schedules + RZD |
| Novgorod | Only hotels and operators | Hotels + transport (10 carriers) + operators + excursions |
## License
MIT