India Hotels MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | HTTP mode only: bind address. Default is 127.0.0.1 (0.0.0.0 in the Docker image). | 127.0.0.1 |
| PORT | No | HTTP mode only: port for the Streamable HTTP server. Default is 3000. | 3000 |
| OSRM_URL | No | Self-hosted OSRM routing URL. Default uses the public FOSSGIS instance. | |
| CACHE_DIR | No | Directory for caching geocoding and routing responses. | |
| PHOTON_URL | No | Custom Photon geocoding URL. Default uses the public instance. | |
| SERPAPI_KEY | No | Optional SerpApi Google Hotels API key. 250 free searches per month. | |
| ALLOWED_HOSTS | No | HTTP mode only: comma-separated hostnames accepted in the Host header, any port. Default is localhost, 127.0.0.1 and [::1]. | localhost,127.0.0.1,[::1] |
| NOMINATIM_URL | No | Custom Nominatim geocoding URL. Default uses the public instance (1 req/s). | |
| OSRM_FOOT_URL | No | Self-hosted OSRM foot-routing URL. | |
| HTTP_USER_AGENT | Yes | Set to your app name + contact, e.g. "india-hotels-mcp/0.1 (you@example.com)". Required by the Nominatim usage policy. | |
| TRAIN_BUFFER_MIN | No | Buffer in minutes for train arrival/departure. Default is 30. | 30 |
| FLIGHT_BUFFER_MIN | No | Buffer in minutes for flight arrival/departure. Default is 120. | 120 |
| PROVIDERS_DISABLED | No | Comma-separated list of providers to disable. A failing source never fails a search. | |
| PROVIDER_DEADLINE_MS | No | Time limit in milliseconds for each source per search. Default is 20000. | 20000 |
| METRO_TRAFFIC_MULTIPLIER | No | Traffic multiplier applied to drive times in the 8 largest metros. Default is 1.5. | 1.5 |
| OTHER_TRAFFIC_MULTIPLIER | No | Traffic multiplier applied to drive times outside the largest metros. Default is 1.2. | 1.2 |
| ENABLE_UNOFFICIAL_SOURCES | No | Set to true to enable unofficial sources (currently Xotelo). Default is false. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_data_sourcesA | Lists every data source this server uses: hotel price sources, hotel location data, geocoding, routing and bundled datasets. For each it gives whether it is enabled, whether it is official or an unofficial third-party endpoint, recent success/failure, remaining quota and known limitations. Bundled datasets include their build date and licence. Does not fetch any hotel data. |
| resolve_placeA | Turns a name or code into coordinates, or coordinates into nearby transport points. With |
| search_hotelsA | Finds hotels around a place in India for given dates, with live prices from several meta-search sources merged per hotel. The place is one of: lat+lng, an Indian Railways station code, an airport IATA code, or a place name. Returns each hotel's id, coordinates, straight-line distance, stars, guest rating and cheapest current price in INR (with original currency, seller and source). With max_drive_minutes, keeps only hotels within that drive time (OpenStreetMap routing with a traffic allowance) and adds drive_minutes. Results are paginated. Per-seller prices are in get_hotel_rates; times to other places are in compare_hotels. Does not book. |
| get_hotel_ratesA | Fetches current prices for one hotel from every source for the given dates and lists them per booking site (e.g. Booking.com, Agoda, Trip.com, MakeMyTrip, the hotel's own site), cheapest first, in INR with the original currency, tax status, availability and links. The hotel is a hotel_id from search_hotels or plan_stays, or a name with lat/lng. Does not book. |
| travel_timesA | Computes road distance and travel time from each origin to each destination in India (a matrix), by car or on foot. Each place is lat+lng, a railway station code, an airport IATA code or a place name. Returns straight-line km, road km, free-flow minutes and traffic-adjusted minutes per pair, with a warning when a point is far from any road. Does not cover public transport or flights. |
| compare_hotelsA | Compares up to 10 hotels by travel time to a set of labelled places, such as tonight's arrival station, tomorrow's departure airport and attractions. Hotels are hotel_ids from search_hotels (which also supplies their cheapest price) or name + lat/lng. Places are lat+lng, station code, IATA code or place name. Returns, per hotel, the time and distance to every place, total minutes, the cheapest price from the search that found it (with its source, fetch time and dates) and a rank by total minutes. Does not fetch new prices; get_hotel_rates does. |
| plan_staysA | Plans where to stay for each stop of a trip in India. Each stay is an arrival (place + time) and the next departure (place + time); places are lat+lng, station code, IATA code or place name, so train and flight times from any source can be passed in. For every stay it works out check-in/check-out dates (early-morning arrivals book the previous night), searches hotels near the arrival point and, if elsewhere, the departure point, and ranks them by nightly price plus drive time from arrival and to departure (valued at value_of_time_inr_per_hour). Returns candidates with leave-by times that include a check-in buffer for trains or flights, IRCTC retiring-room options for 3–48 h stays at stations, and warnings for late arrivals, early departures and same-day stays. Does not book. |
| find_retiring_roomsA | Lists Indian Railways stations that have IRCTC retiring rooms (rooms and dormitories inside the station for ticketed passengers), at a station code or within a radius of a place. Returns station code, name, operator and distance, the booking rules, indicative price ranges and the IRCTC booking portal link. Live availability and exact prices are not available here: they need a Confirmed or RAC PNR on the IRCTC portal. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Descriptions are unusually explicit and cross-reference each other ('Per-seller prices are in get_hotel_rates', 'Does not fetch new prices; get_hotel_rates does'), cleanly separating search_hotels, get_hotel_rates, compare_hotels and plan_stays. There is mild conceptual overlap since search_hotels, compare_hotels and plan_stays all surface and rank hotels, and travel_times overlaps with compare_hotels' routing, but the boundaries are well spelled out.
All eight tools use consistent snake_case verb_noun (or verb_theme) form: search_hotels, get_hotel_rates, get_data_sources, resolve_place, travel_times, compare_hotels, plan_stays, find_retiring_rooms. Verb-first, lowercase, predictable throughout.
Eight tools is a well-scoped set for a hotel-search and stay-planning server, with each tool covering a distinct capability (search, rates, geocoding, routing, comparison, trip planning, retiring rooms, source metadata). No redundant or filler tools.
The surface covers the full research/planning lifecycle for Indian hotel stays: place resolution, hotel search, per-source rates, travel-time matrices, hotel comparison, multi-stop planning and retiring rooms, with a clear intentional boundary on booking. Minor gaps remain (no hotel detail/amenities lookup, no saved-trip or booking handoff), but core workflows are covered without dead ends.