Best Western Hotels
Search Best Western hotels worldwide: descriptions, addresses, contacts, amenities and photos.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"hotels": {
"url": "https://mcp-hotel.bestwestern.fr/mcp"
}
}
}リモートエンドポイント
https://mcp-hotel.bestwestern.fr/mcpstreamable-httpできること
ツール一覧
ツール(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.
入力スキーマ
{
"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"
}出力スキーマ
{
"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.
入力スキーマ
{
"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"
}出力スキーマ
{
"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.
入力スキーマ
{
"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"
}出力スキーマ
{
"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.
入力スキーマ
{
"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"
}出力スキーマ
{
"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"
}コミュニティ
エビデンス