io.github.chrischall/viator-mcp icon

viator-mcp

by Chrischall

io.github.chrischall/viator-mcp

Search Viator tours and activities — products, availability, attractions, destinations.

Version 1.0.3 · latest
AI Tools
Local
View source

viator-mcp · v1.0.3 (latest)

by Chrischall

71

viator-mcp

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

Area Tools
Products vt_search_products, vt_get_product, vt_list_product_tags
Search vt_search_freetext
Attractions vt_search_attractions, vt_get_attraction
Availability vt_get_availability_schedule
Reference vt_list_destinations, vt_get_locations, vt_get_exchange_rates

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

Variable Required Description
VIATOR_API_KEY yes Viator Partner API key (sent as exp-api-key)
VIATOR_API_BASE_URL no API host (default production; set https://api.sandbox.viator.com/partner for a sandbox key)
VIATOR_LANGUAGE no Accept-Language for response text (default en-US)
VIATOR_CACHE_TTL no Seconds to cache identical reads (default 60; 0 disables)
VIATOR_STATIC_CACHE_TTL no Seconds 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