io.github.chrischall/viator-mcp
Search Viator tours and activities — products, availability, attractions, destinations.
Open source Open in the app JSON README (API)
About
Search Viator tours and activities — products, availability, attractions, destinations.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- chrischall
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 1.2.1
- Stars
- 1
- Last push
- 2026-09-05T21:33:16Z
- Repository state
- ativo
- Language
- TypeScript
- Added
- 2026-08-29 03:02:34
- Updated
- 2026-09-05 01:00:31
- Origin id
io.github.chrischall/viator-mcp
README
# viator-mcp
[](https://www.npmjs.com/package/@chrischall/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
```json
{
"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](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).
## 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` |
| 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". |
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
```bash
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](docs/VIATOR-API.md).
## License
MIT