Best Western Hotels
Search Best Western hotels worldwide: descriptions, addresses, contacts, amenities and photos.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"hotels": {
"url": "https://mcp-hotel.bestwestern.fr/mcp"
}
}
}Puntos de conexión remotos
https://mcp-hotel.bestwestern.fr/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (4)
🟢search_hotels(city, country, min_stars, brand, status, ...)
Search the chain's hotels (worldwide, several thousand) by location, stars, brand, status and amenities, with pagination. All filters are optional and combined with AND. Always pass `country` (ISO code, e.g. "FR") together with `city` when the country is known or implied: a search on "Paris" alone returns Paris (Kentucky, US) and Paris (Ontario, CA) before Paris (France). Returns {"language", "total", "offset", "limit", "count", "next_offset", "hotels"}: `total` is the number of matching hotels, `next_offset` is null on the last page. Each hotel is a summary (hotel_id, name, brand, city, country, state, stars, status, lat, lng, cover_photo); use get_hotel_details for the full record. Geographic search: give a center (lat + lng, or near_hotel_id) and radius_km. Results are then sorted by distance, each hotel gets a `distance_km` field and the response a `center` field. Coordinates you supply for a landmark are approximate, so prefer a generous radius. Hotels without coordinates are excluded. No availability, rates or booking: this tool only returns descriptive information.
Esquema de entrada
{
"type": "object",
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "City name, partial match ignoring case, accents, hyphens and St/Ste abbreviations (e.g. 'Saint-Étienne' = 'saint etienne' = 'St Etienne'; 'Saint' matches every city containing 'Saint'). If no city matches, the response lists close city names in `city_suggestions`. City names are ambiguous worldwide: combine with `country` whenever the country is known.",
"title": "City"
},
"country": {
"anyOf": [
{
"maxLength": 2,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO 3166-1 alpha-2 country code, uppercase (FR, US, CA, DE...). Strongly recommended together with `city` to avoid homonyms (Paris FR vs Paris US/CA).",
"title": "Country"
},
"min_stars": {
"anyOf": [
{
"maximum": 5,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum star rating (1-5). Hotels without a star rating are excluded when set. For an exact rating, filter the results on their `stars` field.",
"title": "Min Stars"
},
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Partial match on the sub-brand, ignoring case and accents (e.g. 'Plus', 'Premier', 'Signature Collection')",
"title": "Brand"
},
"status": {
"anyOf": [
{
"enum": [
"open",
"closed",
"renovation"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Hotel status",
"title": "Status"
},
"required_amenities": {
"description": "Amenity IDs the hotel must ALL have, uppercase (e.g. [\"POOL\", \"PARKING\"]). Unknown IDs raise an error listing the valid ones; the catalogue is also available via get_amenities without hotel_id.",
"items": {
"type": "string"
},
"title": "Required Amenities",
"type": "array"
},
"language": {
"default": "fr",
"description": "Language of the multilingual fields of the results. Accepted values: fr, en, de, it, es. A text missing in the requested language is returned in French.",
"enum": [
"fr",
"en",
"de",
"it",
"es"
],
"title": "Language",
"type": "string"
},
"limit": {
"default": 20,
"description": "Maximum number of hotels to return (1-100)",
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Number of matching hotels to skip, for pagination. Pass the `next_offset` value of the previous response.",
"minimum": 0,
"title": "Offset",
"type": "integer"
},
"lat": {
"anyOf": [
{
"maximum": 90,
"minimum": -90,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Latitude of the search center (-90 to 90). Use with `lng` and `radius_km`.",
"title": "Lat"
},
"lng": {
"anyOf": [
{
"maximum": 180,
"minimum": -180,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitude of the search center (-180 to 180). Use with `lat` and `radius_km`.",
"title": "Lng"
},
"near_hotel_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Use this hotel's coordinates as the search center (instead of lat/lng) to find other hotels around it; the hotel itself is excluded. Use with `radius_km`.",
"title": "Near Hotel Id"
},
"radius_km": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 200,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Search radius in kilometres (up to 200). Required with lat/lng or near_hotel_id.",
"title": "Radius Km"
}
},
"title": "search_hotelsArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"language": {
"description": "Language of the returned texts",
"title": "Language",
"type": "string"
},
"total": {
"description": "Number of hotels matching the filters",
"title": "Total",
"type": "integer"
},
"offset": {
"title": "Offset",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"count": {
"description": "Number of hotels in this page",
"title": "Count",
"type": "integer"
},
"next_offset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Offset of the next page, null on the last page",
"title": "Next Offset"
},
"center": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Center of a geographic search: {lat, lng, radius_km}, plus near_hotel_id if used",
"title": "Center"
},
"city_suggestions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "When `city` matches no hotel: close city names to retry with",
"title": "City Suggestions"
},
"hotels": {
"items": {
"$ref": "#/$defs/HotelSummary"
},
"title": "Hotels",
"type": "array"
}
},
"required": [
"language",
"total",
"offset",
"limit",
"count",
"next_offset",
"hotels"
],
"$defs": {
"HotelSummary": {
"additionalProperties": true,
"properties": {
"hotel_id": {
"title": "Hotel Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Brand"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "City"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Country"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "State"
},
"stars": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Stars"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Lat"
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Lng"
},
"cover_photo": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Cover Photo"
},
"distance_km": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Distance from the search center, only for geographic searches",
"title": "Distance Km"
}
},
"required": [
"hotel_id"
],
"title": "HotelSummary",
"type": "object"
}
},
"title": "SearchResult"
}🟢get_hotel_details(hotel_id, language)
Return the complete details of one hotel (descriptions, address, location, contacts, policies, page URL, amenity IDs). Requires a valid hotel_id: call search_hotels first if you only know the hotel name or city. No availability, rates or booking: for those, give the user the page_url or the contact details of the hotel.
Esquema de entrada
{
"type": "object",
"properties": {
"hotel_id": {
"description": "Hotel ID as returned by search_hotels (e.g. PAR-87155)",
"title": "Hotel Id",
"type": "string"
},
"language": {
"default": "fr",
"description": "Language of the texts. Accepted values: fr, en, de, it, es. A text missing in the requested language is returned in French.",
"enum": [
"fr",
"en",
"de",
"it",
"es"
],
"title": "Language",
"type": "string"
}
},
"required": [
"hotel_id"
],
"title": "get_hotel_detailsArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"language": {
"description": "Language of the returned texts",
"title": "Language",
"type": "string"
},
"hotel_id": {
"title": "Hotel Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Brand"
},
"stars": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Stars"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"description_short": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description Short"
},
"description_long": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description Long"
},
"page_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Page Url"
},
"address": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Address"
},
"location": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Location"
},
"contact": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Contact"
},
"policies": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Policies"
},
"amenities_ids": {
"default": [],
"items": {
"type": "string"
},
"title": "Amenities Ids",
"type": "array"
}
},
"required": [
"language",
"hotel_id"
],
"additionalProperties": true,
"title": "HotelDetails"
}🟢get_amenities(hotel_id, amenity_id, language)
Return the amenities of one hotel, or the chain's global amenity catalogue when hotel_id is omitted. Call it without hotel_id to discover the valid amenity IDs to use in search_hotels. No availability, rates or booking: this tool only returns descriptive information.
Esquema de entrada
{
"type": "object",
"properties": {
"hotel_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Hotel ID from search_hotels. If omitted, returns the chain's full amenity catalogue.",
"title": "Hotel Id"
},
"amenity_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Restrict to one amenity ID, uppercase (e.g. POOL, WIFI_INTERNET, PARKING, RESTAURANT, FITNESS). Unknown IDs raise an error listing the valid ones; with hotel_id, an empty list means the hotel does not have this amenity.",
"title": "Amenity Id"
},
"language": {
"default": "fr",
"description": "Language of the labels. Accepted values: fr, en, de, it, es. A text missing in the requested language is returned in French.",
"enum": [
"fr",
"en",
"de",
"it",
"es"
],
"title": "Language",
"type": "string"
}
},
"title": "get_amenitiesArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"language": {
"description": "Language of the returned texts",
"title": "Language",
"type": "string"
},
"amenities": {
"items": {
"$ref": "#/$defs/Amenity"
},
"title": "Amenities",
"type": "array"
}
},
"required": [
"language",
"amenities"
],
"$defs": {
"Amenity": {
"additionalProperties": true,
"properties": {
"amenity_id": {
"title": "Amenity Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"icon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Icon"
}
},
"required": [
"amenity_id"
],
"title": "Amenity",
"type": "object"
}
},
"title": "AmenitiesResult"
}🟢get_hotel_photos(hotel_id, cover_only, language)
Return the photo gallery of a hotel (URLs and captions), optionally limited to the cover photo. No availability, rates or booking: this tool only returns descriptive information.
Esquema de entrada
{
"type": "object",
"properties": {
"hotel_id": {
"description": "Hotel ID as returned by search_hotels (e.g. PAR-87155)",
"title": "Hotel Id",
"type": "string"
},
"cover_only": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "If true, return only the cover photo",
"title": "Cover Only"
},
"language": {
"default": "fr",
"description": "Language of the captions. Accepted values: fr, en, de, it, es. A text missing in the requested language is returned in French.",
"enum": [
"fr",
"en",
"de",
"it",
"es"
],
"title": "Language",
"type": "string"
}
},
"required": [
"hotel_id"
],
"title": "get_hotel_photosArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"language": {
"description": "Language of the returned texts",
"title": "Language",
"type": "string"
},
"photos": {
"items": {
"$ref": "#/$defs/Photo"
},
"title": "Photos",
"type": "array"
}
},
"required": [
"language",
"photos"
],
"$defs": {
"Photo": {
"additionalProperties": true,
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"url": {
"title": "Url",
"type": "string"
},
"caption": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Caption"
},
"is_cover": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Cover"
}
},
"required": [
"url"
],
"title": "Photo",
"type": "object"
}
},
"title": "PhotosResult"
}Comunidad
Evidencia