mcpField
V
viator-mcp

viator-mcp

Local
github.com/chrischallMaps & Travel1Updated 4d ago

About viator-mcp

viator-mcp connects Claude to the Viator Partner API for read-only discovery of tours, activities, and travel information. It supports structured and free-text searches, with product availability and destination details.

Key features

  1. 01Search products with structured filters
  2. 02Search by free text
  3. 03Retrieve product details and availability
  4. 04Browse attractions and destinations
  5. 05Look up locations and exchange rates

Use cases

  1. 01Find tours matching search criteria
  2. 02Check a product's details and availability
  3. 03Explore attractions in a destination
  4. 04Retrieve destination or currency reference data

MCP support

Exposes read-only Viator Partner API searches and reference data as MCP tools. It does not provide booking endpoints; product results include a booking URL.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"chrischall-viator": {
"command": "npx",
"args": [
"-y",
"@chrischall/viator-mcp"
],
"env": {
"VIATOR_API_KEY": "<VIATOR_API_KEY>",
"VIATOR_API_BASE_URL": "<VIATOR_API_BASE_URL>",
"VIATOR_LANGUAGE": "<VIATOR_LANGUAGE>",
"VIATOR_CACHE_TTL": "<VIATOR_CACHE_TTL>",
"VIATOR_STATIC_CACHE_TTL": "<VIATOR_STATIC_CACHE_TTL>"
}
}
}
}
Run commandnpx -y @chrischall/viator-mcp
Environment variables to set
VIATOR_API_KEYSecretViator Partner API key (exp-api-key) — free Basic Access affiliate signup at partnerresources.viator.com
VIATOR_API_BASE_URLAPI host (default production; set https://api.sandbox.viator.com/partner for a sandbox key)
VIATOR_LANGUAGEAccept-Language for response text, e.g. en-US, es, fr, de, ja (default en-US)
VIATOR_CACHE_TTLSeconds to cache identical read responses (default 60; 0 disables)
VIATOR_STATIC_CACHE_TTLSeconds to cache reference data — destinations, tags, locations, rates (default 3600; 0 disables)

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@chrischall/viator-mcp2.1.10

Tools

11

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
sortenumNoSort key (default: DEFAULT — Viator relevance)DEFAULT | PRICE | TRAVELER_RATING | ITINERARY_DURATION | DATE_ADDED
tagsarrayNoTag ids products must match (from vt_list_product_tags)
viewenumNoResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact (default) projects each result down to its product code, title, from-price and currency, rating, review count, duration, confirmation type, flags, booking URL and cover image, falling back to the media-stripped raw response if Viator's shape drifts; "full" returns Viator's payload untouched.compact | full
countintegerNoResults per page (max 50; default 10)
flagsarrayNoProduct flags, e.g. FREE_CANCELLATION, LIKELY_TO_SELL_OUT, PRIVATE_TOUR
orderenumNoSort directionASCENDING | DESCENDING
startintegerNo1-based index of the first result to return
currencyenumNoCurrency for request/response prices (default USD)AED | ARS | AUD | BRL | CAD | CHF | CLP | CNY | COP | DKK | EUR | FJD | GBP | HKD | IDR | ILS | INR | ISK | JPY | KRW | MXN | MYR | NOK | NZD | PEN | PHP | PLN | RUB | SEK | SGD | THB | TRY | TWD | USD | VND | ZAR
end_datestringNoOnly products operating on/before this date (YYYY-MM-DD)
max_ratingnumberNoMaximum average traveler rating (0-5)
min_ratingnumberNoMinimum average traveler rating (0-5)
start_datestringNoOnly products operating on/after this date (YYYY-MM-DD)
destinationstringNoDestination id (from vt_list_destinations), e.g. "732" for Paris
lowest_pricenumberNoMinimum from-price (in currency)
highest_pricenumberNoMaximum from-price (in currency)
campaign_valuestringNoAffiliate campaign tracking id — appended to the productUrl/attractionUrl/destinationUrl Viator returns
max_duration_minutesintegerNoMaximum product duration in minutes
min_duration_minutesintegerNoMinimum product duration in minutes

Details

From the project README

viator-mcp

npm

MCP server for the Viator Partner API (v2) — search tours, activities and experiences for Claude. Search the catalog with structured filters or free text, get product details and availability schedules, browse attractions and destinations, all over stdio.

Developed and maintained by AI (Claude Code). Use at your own discretion.

Quick start

{
  "mcpServers": {
    "viator": {
      "command": "npx",
      "args": ["-y", "@chrischall/viator-mcp"],
      "env": { "VIATOR_API_KEY": "your-viator-partner-api-key" }
    }
  }
}

Get a key by signing up as a Viator affiliate at partnerresources.viator.com — the Basic Access tier is free. This server targets that tier: read-only search/content/availability; no booking endpoints (product results carry a productUrl for booking on viator.com, tagged with your affiliate id).

Tools

AreaTools
Productsvt_search_products, vt_get_product, vt_list_product_tags
Searchvt_search_freetext
Attractionsvt_search_attractions, vt_get_attraction
Availabilityvt_get_availability_schedule
Referencevt_list_destinations, vt_get_locations, vt_get_exchange_rates
Healthvt_healthcheck — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean "no products" or "never authenticated".

All tools are read-only. vt_search_products and vt_search_freetext accept compact: true for slim summaries (code, title, price, rating, booking URL) instead of full records.

Environment

VariableRequiredDescription
VIATOR_API_KEYyesViator Partner API key (sent as exp-api-key)
VIATOR_API_BASE_URLnoAPI host (default production; set https://api.sandbox.viator.com/partner for a sandbox key)
VIATOR_LANGUAGEnoAccept-Language for response text (default en-US)
VIATOR_CACHE_TTLnoSeconds to cache identical reads (default 60; 0 disables)
VIATOR_STATIC_CACHE_TTLnoSeconds to cache reference data — destinations, tags, locations, exchange rates (default 3600)

Viator rate-limits per endpoint on a rolling 10-second window and answers 429/503 with Retry-After; the client honors it (one retry) and the response cache absorbs repeated identical calls.

Development

npm install
npm test          # vitest; no real network calls
npm run build     # tsc + esbuild bundle

The API surface this server is coded against is pinned in docs/VIATOR-API.md.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.