VeryChic Hotel Deals

Unofficial read-only MCP server for VeryChic hotel offers

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
83%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,126토큰 (도구 정의)
~17.8 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.22%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "verychic-mcp": {
      "command": "uvx",
      "args": [
        "verychic-mcp"
      ]
    }
  }
}

실행 가능한 패키지

pypiverychic-mcp0.4.0stdio

원격 엔드포인트

https://verychic-mcp.fly.dev/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (2)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢verychic_search_offers(destination, country, max_price, min_discount, min_stars, ...)

Search and filter the current VeryChic offers by destination, country, price, discount, stars, flights, theme, or proximity — with optional sorting. When to use: when you already know roughly what the user wants — a place, a country, a budget, a minimum discount or star rating, flights vs hotel-only, a theme (e.g. pool, spa, romantic, last_minute), or hotels near a point (near_lat/near_lng, with an optional radius_km). To inspect one specific offer in depth use `verychic_offer_details`. All filters are optional and combine with AND; call it with no filter to browse the full current catalogue in catalogue order. Behaviour: read-only and anonymous; rate-limited to about 1 request per second. Filtering is done client-side over the live catalogue: `destination` is a substring (matched on destination or name), `country` is an exact match — both ignore case and accents, so 'grece' matches the catalogue's 'Grèce' — `max_price`/`min_discount`/`min_stars` are numeric bounds, `flights_included` toggles flight-bearing vs hotel-only, and `theme` matches a curated label decoded from the catalogue's thematics tags. Use `sort_by` to order results (`discount`, `price`, `rating`, `stars`, or `distance`). Prices are in EUR and text is in French; there is no pagination. Returns the first `limit` matches after filtering and sorting. "Current" means live offers at call time; the catalogue changes over time. Returns a list of offer objects (same `source` + `external_id` pair for use with `verychic_offer_details`). Each offer also carries `discount` (percent off, may be null), `stars` (1-5, may be null), `price_label` (human-readable price unit, e.g. "à partir de par pers. pour 3 nuits" vs "par chambre" — read this before comparing prices), `price_with_flights` (EUR, null when not applicable), `flights_included` (bool), `rating` (overall guest grade out of 10), `opinion_count` (how many reviews that grade rests on — check it before trusting a rating), the per-topic grades `rating_location`, `rating_room`, `rating_service`, `rating_food` and `rating_public_area` (out of 10, null when unrated), and `themes` (curated theme labels decoded from the catalogue's thematics tags, e.g. ["pool", "luxury"]). The catalogue carries no reviews, so every grade is null and `opinion_count` is 0 here; call `verychic_offer_details` on an offer to get its real review data. An empty list means no offer matched the filters. Proximity search: pass `near_lat` and `near_lng` (decimal degrees, together) to compute each offer's `distance_km` from that point; add `radius_km` to keep only offers within that distance, and/or `sort_by="distance"` for nearest-first. `distance_km` is null when no center is given.

입력 스키마

{
  "type": "object",
  "properties": {
    "destination": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Substring matched against each offer's destination AND name, ignoring case and accents (e.g. 'paris', 'maldives', 'crete' finds 'Crète'). Omit to not filter by destination.",
      "title": "Destination"
    },
    "country": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Exact country name as spelled in the (French) catalogue, matched ignoring case and accents, e.g. 'France', 'Italie', 'Grece' (finds 'Grèce'). Omit to not filter by country.",
      "title": "Country"
    },
    "max_price": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Inclusive upper bound on the offer price, in EUR. Offers with no price are excluded when this is set. Omit for no price cap.",
      "title": "Max Price"
    },
    "min_discount": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Keep only offers whose discount percentage is at least this value (e.g. 40 for '40% off or more'). Offers with no discount are excluded. Omit for no discount filter.",
      "title": "Min Discount"
    },
    "min_stars": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Keep only offers with at least this hotel star rating (1-5), parsed from the offer name. Offers with no detectable rating are excluded. Omit to not filter by stars.",
      "title": "Min Stars"
    },
    "flights_included": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter on whether flights are part of the offer: true keeps flight-bearing offers, false keeps hotel-only offers. Omit to not filter.",
      "title": "Flights Included"
    },
    "theme": {
      "anyOf": [
        {
          "enum": [
            "adults_only",
            "city_break",
            "cruise",
            "island",
            "last_minute",
            "luxury",
            "mountain",
            "nature",
            "pool",
            "romantic",
            "rooftop",
            "spa",
            "sun",
            "villa"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Keep only offers matching this curated theme, decoded from the catalogue's thematics tags. One of: adults_only, city_break, cruise, island, last_minute, luxury, mountain, nature, pool, romantic, rooftop, spa, sun, villa. Omit to not filter by theme.",
      "title": "Theme"
    },
    "near_lat": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Latitude of a search center for proximity search, in decimal degrees. Must be given together with near_lng. Omit for no geo search.",
      "title": "Near Lat"
    },
    "near_lng": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Longitude of a search center for proximity search, in decimal degrees. Must be given together with near_lat. Omit for no geo search.",
      "title": "Near Lng"
    },
    "radius_km": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Keep only offers within this many kilometers of the near_lat/near_lng center. Requires near_lat and near_lng. Omit for no radius.",
      "title": "Radius Km"
    },
    "sort_by": {
      "anyOf": [
        {
          "enum": [
            "discount",
            "price",
            "rating",
            "stars",
            "distance"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Sort the results: 'discount' (biggest discount first), 'price' (cheapest first), 'rating' (best-rated first), 'stars' (most stars first), 'distance' (nearest first, requires near_lat/near_lng). Offers missing the sort value are placed last. Omit to keep catalogue order.",
      "title": "Sort By"
    },
    "limit": {
      "default": 20,
      "description": "Maximum number of matching offers to return (default 20), applied after filtering and sorting. No pagination.",
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "verychic_search_offersArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "$ref": "#/$defs/OfferOut"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "$defs": {
    "OfferOut": {
      "properties": {
        "source": {
          "title": "Source",
          "type": "string"
        },
        "external_id": {
          "title": "External Id",
          "type": "integer"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "destination": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Destination"
        },
        "country": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Country"
        },
        "price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price"
        },
        "currency": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Currency"
        },
        "short_desc": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Short Desc"
        },
        "discount": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Discount"
        },
        "url_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Url Name"
        },
        "sales_mode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Sales Mode"
        },
        "offer_end_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Offer End Date"
        },
        "latitude": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Latitude"
        },
        "longitude": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Longitude"
        },
        "image": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Image"
        },
        "advantages": {
          "items": {
            "type": "string"
          },
          "title": "Advantages",
          "type": "array"
        },
        "themes": {
          "items": {
            "type": "string"
          },
          "title": "Themes",
          "type": "array"
        },
        "stars": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Stars"
        },
        "price_label": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price Label"
        },
        "price_with_flights": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price With Flights"
        },
        "flights_included": {
          "title": "Flights Included",
          "type": "boolean"
        },
        "rating": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating"
        },
        "opinion_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Opinion Count"
        },
        "rating_location": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Location"
        },
        "rating_public_area": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Public Area"
        },
        "rating_room": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Room"
        },
        "rating_service": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Service"
        },
        "rating_food": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Food"
        },
        "distance_km": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Distance Km"
        },
        "offer_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Offer Url"
        }
      },
      "required": [
        "source",
        "external_id",
        "name",
        "destination",
        "country",
        "price",
        "currency",
        "short_desc",
        "discount",
        "url_name",
        "sales_mode",
        "offer_end_date",
        "latitude",
        "longitude",
        "image",
        "advantages",
        "themes",
        "stars",
        "price_label",
        "price_with_flights",
        "flights_included",
        "rating",
        "opinion_count",
        "rating_location",
        "rating_public_area",
        "rating_room",
        "rating_service",
        "rating_food",
        "distance_km",
        "offer_url"
      ],
      "title": "OfferOut",
      "type": "object"
    }
  },
  "title": "verychic_search_offersOutput"
}
🟢verychic_offer_details(source, external_id, months)

Get full details plus per-date availability and prices for one specific VeryChic offer. When to use: after `verychic_search_offers` returned an offer you want to inspect — pass that offer's `source` and `external_id` here. You must obtain those two identifiers from a search result first; this tool does not search. Behaviour: read-only and anonymous; rate-limited to about 1 request per second; prices in EUR, text in French. Availability is looked up for roughly the next 5 months unless `months` names the window to query. For tour-operator packages (`source` = 'ORCHESTRA_TO') VeryChic exposes no date-availability endpoint: `availabilities` is then empty and `availabilities_supported` is false — meaning "not supported", NOT "sold out". Returns an object with: `offer` (same fields as a search result, plus `offer_url`), `advantages`, `included_added_values`, `non_included_added_values`, `gallery` (image URLs), `availabilities` (one entry per check-in date with `date`, `price`, `currency`, `nights`, `days`, `departure_city_code`), `availabilities_by_month` (one row per month with stock — `month` as 'MM/YYYY', `min_price`, `currency` and `dates_available` — in chronological order), `availabilities_supported` (bool), and `cheapest_price` (lowest available price, or null when none). To answer "which month is cheapest", read `availabilities_by_month` rather than scanning `availabilities`: it carries the same answer in a fraction of the size, and it stays small when `months` asks for a wide window.

입력 스키마

{
  "type": "object",
  "properties": {
    "source": {
      "description": "The offer's source type, copied verbatim from the `source` field of a `verychic_search_offers` result. One of 'ORCHESTRA' (a single hotel) or 'ORCHESTRA_TO' (a tour-operator package). Packages have no per-date availability.",
      "title": "Source",
      "type": "string"
    },
    "external_id": {
      "description": "The offer's numeric `external_id`, copied from a `verychic_search_offers` result. Identifies the offer together with `source`.",
      "title": "External Id",
      "type": "integer"
    },
    "months": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Months to look up check-in availability for, each written 'MM/YYYY' (e.g. ['01/2027', '02/2027']). Use it to look further ahead than the default window, or to target a season. Omit for roughly the next 5 months. Has no effect on tour-operator packages, which expose no date availability.",
      "title": "Months"
    }
  },
  "required": [
    "source",
    "external_id"
  ],
  "title": "verychic_offer_detailsArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "offer": {
      "$ref": "#/$defs/OfferOut"
    },
    "advantages": {
      "items": {
        "type": "string"
      },
      "title": "Advantages",
      "type": "array"
    },
    "included_added_values": {
      "items": {
        "type": "string"
      },
      "title": "Included Added Values",
      "type": "array"
    },
    "non_included_added_values": {
      "items": {
        "type": "string"
      },
      "title": "Non Included Added Values",
      "type": "array"
    },
    "gallery": {
      "items": {
        "type": "string"
      },
      "title": "Gallery",
      "type": "array"
    },
    "availabilities": {
      "items": {
        "$ref": "#/$defs/AvailabilityOut"
      },
      "title": "Availabilities",
      "type": "array"
    },
    "availabilities_by_month": {
      "items": {
        "$ref": "#/$defs/MonthPriceOut"
      },
      "title": "Availabilities By Month",
      "type": "array"
    },
    "availabilities_supported": {
      "title": "Availabilities Supported",
      "type": "boolean"
    },
    "cheapest_price": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cheapest Price"
    }
  },
  "required": [
    "offer",
    "advantages",
    "included_added_values",
    "non_included_added_values",
    "gallery",
    "availabilities",
    "availabilities_by_month",
    "availabilities_supported",
    "cheapest_price"
  ],
  "$defs": {
    "AvailabilityOut": {
      "properties": {
        "date": {
          "title": "Date",
          "type": "string"
        },
        "price": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price"
        },
        "currency": {
          "title": "Currency",
          "type": "string"
        },
        "nights": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Nights"
        },
        "days": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Days"
        },
        "departure_city_code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Departure City Code"
        }
      },
      "required": [
        "date",
        "price",
        "currency",
        "nights",
        "days",
        "departure_city_code"
      ],
      "title": "AvailabilityOut",
      "type": "object"
    },
    "MonthPriceOut": {
      "properties": {
        "month": {
          "title": "Month",
          "type": "string"
        },
        "min_price": {
          "title": "Min Price",
          "type": "integer"
        },
        "currency": {
          "title": "Currency",
          "type": "string"
        },
        "dates_available": {
          "title": "Dates Available",
          "type": "integer"
        }
      },
      "required": [
        "month",
        "min_price",
        "currency",
        "dates_available"
      ],
      "title": "MonthPriceOut",
      "type": "object"
    },
    "OfferOut": {
      "properties": {
        "source": {
          "title": "Source",
          "type": "string"
        },
        "external_id": {
          "title": "External Id",
          "type": "integer"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "destination": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Destination"
        },
        "country": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Country"
        },
        "price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price"
        },
        "currency": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Currency"
        },
        "short_desc": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Short Desc"
        },
        "discount": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Discount"
        },
        "url_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Url Name"
        },
        "sales_mode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Sales Mode"
        },
        "offer_end_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Offer End Date"
        },
        "latitude": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Latitude"
        },
        "longitude": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Longitude"
        },
        "image": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Image"
        },
        "advantages": {
          "items": {
            "type": "string"
          },
          "title": "Advantages",
          "type": "array"
        },
        "themes": {
          "items": {
            "type": "string"
          },
          "title": "Themes",
          "type": "array"
        },
        "stars": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Stars"
        },
        "price_label": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price Label"
        },
        "price_with_flights": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price With Flights"
        },
        "flights_included": {
          "title": "Flights Included",
          "type": "boolean"
        },
        "rating": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating"
        },
        "opinion_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Opinion Count"
        },
        "rating_location": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Location"
        },
        "rating_public_area": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Public Area"
        },
        "rating_room": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Room"
        },
        "rating_service": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Service"
        },
        "rating_food": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Food"
        },
        "distance_km": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Distance Km"
        },
        "offer_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Offer Url"
        }
      },
      "required": [
        "source",
        "external_id",
        "name",
        "destination",
        "country",
        "price",
        "currency",
        "short_desc",
        "discount",
        "url_name",
        "sales_mode",
        "offer_end_date",
        "latitude",
        "longitude",
        "image",
        "advantages",
        "themes",
        "stars",
        "price_label",
        "price_with_flights",
        "flights_included",
        "rating",
        "opinion_count",
        "rating_location",
        "rating_public_area",
        "rating_room",
        "rating_service",
        "rating_food",
        "distance_km",
        "offer_url"
      ],
      "title": "OfferOut",
      "type": "object"
    }
  },
  "title": "OfferDetailsOut"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 2개
검증됨버전이 기록되지 않음도구 2개
검증됨버전이 기록되지 않음도구 2개