tripadvisor-mcp
# tripadvisor-mcp
[](https://www.npmjs.com/package/@chrischall/tripadvisor-mcp)
MCP server for the **TripAdvisor Terra API** — travel data for Claude. Search hotels, restaurants, and attractions by name or coordinates, then pull full details, photos, and reviews, all over stdio. (Terra is TripAdvisor's current API; the legacy Content API is sunset on 2026-08-31.)
> Developed and maintained by AI (Claude Code). Use at your own discretion.
## Quick start
```json
{
"mcpServers": {
"tripadvisor": {
"command": "npx",
"args": ["-y", "@chrischall/tripadvisor-mcp"],
"env": { "TRIPADVISOR_API_KEY": "your-terra-api-key-here" }
}
}
}
```
Get a key at [tripadvisor.com/developers](https://www.tripadvisor.com/developers). The free **Discover** tier is pay-as-you-go (10 QPS, **10,000 calls/day**); responses are cached in-memory to stretch it. Make sure it's a **Terra** key — a legacy Content API key returns 403.
## Tools
| Tool | What it does |
| --- | --- |
| `ta_search_locations` | Search locations by name (optionally scoped by category, country/geo/postal code) — paginated; `compact:true` for slim summaries |
| `ta_search_nearby` | Find locations near a lat/lon+radius, a `location_id`+radius, or inside a sw/ne bounding box (category, min rating, sort) — `compact:true` supported |
| `ta_get_location_details` | Full details: names, descriptions, address, coordinates, traveler ratings, phone, listing URLs |
| `ta_get_locations` | Batch — details for **multiple** location ids in one call (cheaper than N detail calls); `compact:true` supported |
| `ta_get_location_photos` | Photos with multi-size image URLs, source, and dimensions — paginated |
| `ta_get_location_reviews` | Traveler reviews — paginated |
| `ta_web_healthcheck` | Diagnose the optional tripadvisor.com browser-bridge connection (see below) |
| `ta_web_get_location` | Location details (rating, address, coords, phone, photo) read from the public page via the browser bridge — **no API key needed** |
All tools are read-only — Terra has no write endpoints.
### Browser bridge (optional)
`ta_web_healthcheck` is the first tool of an optional second tier that reaches
tripadvisor.com's consumer site (bot-walled, so unreachable server-side) by
routing same-origin fetches through your signed-in browser tab via the
ContextMint Bridge browser extension, installed from
[its releases page](https://github.com/nullnet-app/contextmint-bridge/releases)
(Chrome: download the chrome zip and load it unpacked from `chrome://extensions`
with Developer mode on; Safari isn't available yet — it will ship inside the
ContextMint app, which has no public download — so use Chrome for now). It needs
the extension installed and a one-time pairing approval; the Content API tools
above never touch the bridge.
ContextMint Bridge is the fetchproxy browser extension under its new name, from
the same maintainer — fetchproxy's own README
(<https://github.com/chrischall/fetchproxy#extension>) points to it. Its source is
public at <https://github.com/nullnet-app/contextmint-bridge>: build it yourself,
or check a release zip against the `.sha256` file published beside it
(`shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256`).
`ta_web_get_location` uses this bridge to read a location's details straight
from its public TripAdvisor page — so it works **without an API key**,
covering attractions, hotels, and restaurants. It returns core business data
(rating, review count, address, coordinates, phone, primary photo, listing
URL) but not individual review text. Request shapes are pinned in
[docs/TRIPADVISOR-WEB-API.md](docs/TRIPADVISOR-WEB-API.md).
## Environment
| Var | Required | Purpose |
| --- | --- | --- |
| `TRIPADVISOR_API_KEY` | yes | Terra API key, sent as the `X-API-Key` header. |
| `TRIPADVISOR_CACHE_TTL` | no | Seconds to cache search responses (default: 300; `0` disables). |
| `TRIPADVISOR_STATIC_CACHE_TTL` | no | Seconds to cache details/photos/reviews (default: 3600; `0` disables). |
| `TRIPADVISOR_REQUEST_TIMEOUT_MS` | no | Per-request timeout for the optional browser bridge (default: 30000). |
| `TRIPADVISOR_DEBUG_LOG` | no | Set to `1` to log browser-bridge requests to stderr. |
## Development
```bash
npm install
npm run build # tsc + esbuild bundle
npm test # vitest (no real network)
```
Endpoint request shapes are pinned in [docs/TRIPADVISOR-API.md](docs/TRIPADVISOR-API.md). With a key in `.env`, `node scripts/live-probe.mjs` exercises every read path through the built client.
## License
MIT
TDQS
Scored across 8 tools
Most tools target distinct operations (search by name, search nearby, photos, reviews, batch details). The main overlap is between ta_web_get_location and ta_get_location_details, which both retrieve location details; the description clarifies one is a fallback, but an agent could still misselect if not reading carefully.
All names use snake_case with a consistent ta_ prefix. Most follow verb_noun (get, search), but ta_web_healthcheck is a noun and the ta_web_* vs ta_* split creates a minor stylistic variation.
Eight tools is well-scoped for a read-only TripAdvisor client. Each tool covers a distinct capability (search, nearby, details, photos, reviews, batch, fallback, diagnostics) without obvious redundancy.
The surface covers the full read lifecycle for TripAdvisor locations: discovery (search/nearby), detail retrieval (single and batch), sub-resources (photos, reviews), and a fallback path for API key issues. No obvious missing operations for a public-data client.