{
  "markdown": "# viator-mcp\n\n[![npm](https://img.shields.io/npm/v/@chrischall/viator-mcp)](https://www.npmjs.com/package/@chrischall/viator-mcp)\n\nMCP 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.\n\n> Developed and maintained by AI (Claude Code). Use at your own discretion.\n\n## Quick start\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": { \"VIATOR_API_KEY\": \"your-viator-partner-api-key\" }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at [partnerresources.viator.com](https://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).\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_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\". |\n\nAll 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.\n\n## Environment\n\n| Variable | Required | Description |\n| --- | --- | --- |\n| `VIATOR_API_KEY` | yes | Viator Partner API key (sent as `exp-api-key`) |\n| `VIATOR_API_BASE_URL` | no | API host (default production; set `https://api.sandbox.viator.com/partner` for a sandbox key) |\n| `VIATOR_LANGUAGE` | no | `Accept-Language` for response text (default `en-US`) |\n| `VIATOR_CACHE_TTL` | no | Seconds to cache identical reads (default `60`; `0` disables) |\n| `VIATOR_STATIC_CACHE_TTL` | no | Seconds to cache reference data — destinations, tags, locations, exchange rates (default `3600`) |\n\nViator 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.\n\n## Development\n\n```bash\nnpm install\nnpm test          # vitest; no real network calls\nnpm run build     # tsc + esbuild bundle\n```\n\nThe API surface this server is coded against is pinned in [docs/VIATOR-API.md](docs/VIATOR-API.md).\n\n## License\n\nMIT\n",
  "bytes": 2833,
  "sha": "9714f9689202c9791525cb1b8bf6629b4c4332f3792d66ed37a8b07344093d43",
  "repo_slug": "chrischall/viator-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_chrischall_viator_mcp_bec78086/readme"
}