mcpField
G
getyourguide-mcp

getyourguide-mcp

Local
github.com/chrischallMaps & Travel0Updated 4d ago

About getyourguide-mcp

An MCP server for searching GetYourGuide tours and activities through the Partner API. It provides tour details, bookable options, availability, reviews, categories, and location data; all tools are read-only.

Key features

  1. 01Search tours by text, place, category, or date
  2. 02Retrieve tour details and bookable options
  3. 03Check availability and participant categories
  4. 04Read customer reviews
  5. 05Browse categories and location listings
  6. 06Choose compact or full response views

Use cases

  1. 01Find activities for a destination and date
  2. 02Compare tour options and availability
  3. 03Review customer feedback before choosing
  4. 04Browse tours by location or category

MCP support

Exposes read-only GetYourGuide Partner API data through tools for MCP clients. Data tools offer compact responses by default or full records on request.

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-getyourguide": {
"command": "npx",
"args": [
"-y",
"getyourguide-mcp"
],
"env": {
"GYG_API_KEY": "<GYG_API_KEY>",
"GYG_CURRENCY": "<GYG_CURRENCY>",
"GYG_LANGUAGE": "<GYG_LANGUAGE>",
"GYG_BASE_URL": "<GYG_BASE_URL>",
"GYG_REQUEST_TIMEOUT_MS": "<GYG_REQUEST_TIMEOUT_MS>"
}
}
}
}
Run commandnpx -y getyourguide-mcp
Environment variables to set
GYG_API_KEYSecretYour GetYourGuide Partner API key (X-ACCESS-TOKEN). Get one by joining the GetYourGuide partner program at partner.getyourguide.com.
GYG_CURRENCYDefault currency for prices (ISO 4217, e.g. USD or EUR). Optional — individual tool calls can override it.
GYG_LANGUAGEDefault content language (e.g. en, de). Optional — individual tool calls can override it.
GYG_BASE_URLAPI base URL (default `https://api.getyourguide.com/1`)
GYG_REQUEST_TIMEOUT_MSPer-request timeout (default 30000)

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
npmgetyourguide-mcp2.1.8

Tools

10

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
qstringNoFree-text search, e.g. "louvre skip the line" or "iata:jfk".
viewenumNoResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns the slim tour projection (id, title, price, duration, rating, cancellation) and strips image URLs; "full" returns GetYourGuide's whole records.compact | full
limitintegerNoMaximum number of items to return (1-500).
dateTostringNoLatest date, YYYY-MM-DD (or full YYYY-MM-DDThh:mm:ss).
offsetintegerNoNumber of items to skip (0-based).
currencystringNoCurrency for prices, ISO 4217 (e.g. USD, EUR). Defaults to GYG_CURRENCY when set.
dateFromstringNoEarliest date, YYYY-MM-DD (or full YYYY-MM-DDThh:mm:ss). Required when dateTo is set.
languagestringNoContent language (e.g. en, de). Defaults to GYG_LANGUAGE when set.
sortFieldenumNoSort field (API default: popularity).popularity | price | rating | duration
categoryIdintegerNoRestrict to a category ID.
locationIdintegerNoRestrict to a location ID (city/POI/region).
extraParamsobjectNoExtra raw query params to merge into the request (escape hatch for API drift). Keys that duplicate this tool's own arguments are ignored.
sortDirectionenumNoSort direction (ignored for popularity).asc | desc

Details

From the project README

getyourguide-mcp

MCP server for GetYourGuide — search tours and activities, read tour details, bookable options, and reviews via the GetYourGuide Partner API.

🤖 This project was developed and is maintained by AI (Claude Code). Use at your own discretion.

Tools

All tools are read-only — this server registers no write tools.

ToolWhat it does
gyg_search_toursSearch tours/activities by free text, location, category, or date range; sortable; view
gyg_get_tourFull record for one tour by numeric ID; view
gyg_get_tour_optionsBookable options of a tour (ticket types, times), optionally within a date range; view
gyg_get_tour_availabilityBooking availability of a tour: participant categories, addons, available dates; view
gyg_get_tour_reviewsCustomer reviews for a tour; view
gyg_list_categoriesActivity categories (IDs feed gyg_search_tours / gyg_list_category_tours); view
gyg_list_category_toursTours in one category; view
gyg_get_locationDetails for a location (city, POI, region) by ID; view
gyg_list_location_toursTours available at one location; view
gyg_healthcheckVerify credentials and upstream reachability; reports failures as data, not exceptions
view — response shape

Every data tool takes view: "compact" | "full", and compact is the default. An efficiency that has to be asked for is one that usually is not, so it is not opt-in — the old compact: true flag on gyg_search_tours is gone.

  • compact — on the three tour LISTINGS it returns the documented slim projection (tour_id, title, abstract, url, price, overall_rating, number_of_ratings, durations, categories, locations), flattened to { _metadata, tours }. On gyg_get_tour — one record, no listing envelope to project — and on every other tool (options, availability, reviews, categories, location) — it instead strips image URLs and keeps everything else.
  • full — GetYourGuide's whole validated record, untouched.

Reach for full when you need a field the projection does not carry (picture variants, coordinates, marketing copy). Every response is minified JSON either way: formatting whitespace is dropped, whitespace inside a value is not.

Setup

You need a GetYourGuide Partner API key — join the (free) partner program at partner.getyourguide.com and copy the API key from your dashboard. The key is sent as the X-ACCESS-TOKEN header on every request.

Claude Code / any MCP host
{
  "mcpServers": {
    "getyourguide": {
      "command": "npx",
      "args": ["-y", "getyourguide-mcp"],
      "env": {
        "GYG_API_KEY": "your-partner-api-key"
      }
    }
  }
}

The server also boots with no key set (so hosts can probe tools/list at install time); the first tool call then returns an actionable error telling you which env var to set.

Environment variables
VariableRequiredMeaning
GYG_API_KEYyes (for tool calls)Partner API key, sent as X-ACCESS-TOKEN
GYG_CURRENCYnoDefault currency for prices (ISO 4217; falls back to USD — the API requires one); per-call currency args override
GYG_LANGUAGEnoDefault content language (falls back to en — the API requires one); per-call language args override
GYG_BASE_URLnoAPI base URL (default https://api.getyourguide.com/1)
GYG_REQUEST_TIMEOUT_MSnoPer-request timeout (default 30000)

For local development, put them in a .env next to the server (gitignored; see .env.example).

Behavior notes

  • Rate limits: one automatic retry on 429/503 honoring Retry-After (capped at 10s). If it still fails, the error tells you to back off.
  • Timeouts & network failures: a request that exceeds GYG_REQUEST_TIMEOUT_MS, or never reaches the API (DNS, refused, reset), comes back as a tool error naming the request path, with a hint to raise the timeout or check GYG_BASE_URL and your network. Cancelling a call is not wrapped — it stays a cancellation.
  • Empty arguments: an empty-string query param (e.g. currency: "" or language: "") is dropped rather than sent, so the env default / USD / en fallback applies instead of the API rejecting a blank value.
  • Auth errors: a 401/403 names both possible causes — a wrong key, or a key whose partner tier doesn't cover that endpoint.
  • API drift: responses are validated leniently. On an unexpected shape the server logs a precise warning to stderr and returns the raw response rather than breaking. See docs/GETYOURGUIDE-API.md — routes and request shapes are live-verified against the API and its official OpenAPI spec; real 200 bodies still need pinning from a keyed capture.
  • extraParams: gyg_search_tours and gyg_get_tour_options accept extraParams to pass raw query params the schema doesn't model. A key that collides with one of the tool's own arguments (limit, offset, currency, cnt_language, q, …) is ignored — the typed argument, or its default, always wins. (Before 2.1.6 extraParams overrode them.)
  • Secrets: upstream error bodies are redacted then truncated before they reach a tool result; the API key is never echoed.

Development

npm install
npm run build          # tsc + esbuild bundle → dist/
npm test               # tsc typecheck + vitest (no network — everything mocked)
npm run test:coverage  # tsc typecheck + the CI gate: 100% lines/branches/functions/statements

Releases are automated with release-please; don't hand-bump versions. PR titles must be conventional commits (feat:, fix:, …) because the repo squash-merges.

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.