{
  "markdown": "# VoyageHacks MCP Server\n\nThe official [Model Context Protocol](https://modelcontextprotocol.io) server for\n[VoyageHacks.com](https://voyagehacks.com), a travel publisher with about 680\nfact-checked guides in each of 11 languages, covering flights, airline reviews,\nhotels, destinations, car rental, trains, airport transfers, eSIM, travel VPN,\ntravel credit cards and travel gear.\n\n**Live endpoint:** `https://voyagehacks.com/mcp`\n**Version:** 2.1.0\n**Docs:** <https://voyagehacks.com/en/mcp-server/>\n\nStateless Streamable HTTP transport (JSON-RPC 2.0 over POST, single JSON\nresponses, no SSE, no sessions), no authentication. Any MCP client can connect\nand start calling tools immediately. A `GET` returns 405 by design: the server\noffers no SSE stream, which is what the Streamable HTTP specification asks for\nin that case.\n\nListed on the [official MCP Registry](https://registry.modelcontextprotocol.io)\nas `com.voyagehacks/travel`.\n\n## Connect\n\n**Claude Code**\n\n```bash\nclaude mcp add --transport http voyagehacks https://voyagehacks.com/mcp\n```\n\n**Claude.ai / Claude Desktop:** Settings, Connectors, Add custom connector,\n`https://voyagehacks.com/mcp`, authentication \"No authentication\".\n\n**ChatGPT:** Settings, Connectors, add `https://voyagehacks.com/mcp`, no auth.\n\n**Perplexity** (Pro, Max, Enterprise): Settings, Connectors, Custom connector,\nRemote, `https://voyagehacks.com/mcp`, authentication \"None\".\n\n**Gemini Enterprise:** create a custom MCP server data store with the HTTPS\nendpoint and \"No Authentication\". The transport is StreamableHTTP, which is what\nGemini Enterprise requires.\n\n**MCP Inspector**\n\n```bash\nnpx @modelcontextprotocol/inspector\n```\n\n## Tools\n\nAll twelve are read-only, annotated `readOnlyHint: true` and\n`destructiveHint: false`, and have no side effect outside their response. Each\ndeclares an `outputSchema` and returns `structuredContent` alongside readable text.\n\n| Tool | What it does |\n| --- | --- |\n| `search_articles` | Full-text search over the guides in one language, with an optional section filter |\n| `get_article` | One page as Markdown, plus its title, language, section, publication date and last-updated date read from the page itself |\n| `search_travel_gear` | Search the VoyageHacks travel gear catalog, about 320 products picked across roughly 50 published buying guides |\n| `recommend_travel_gear` | Turn a trip description into a packing kit, one product per category, with optional structured hints |\n| `get_flight_links` | Flight search links for a route and dates |\n| `get_hotel_links` | Hotel search links for a city, dates, guests and rooms |\n| `get_car_rental_links` | Car and scooter rental comparison links |\n| `get_airport_transfer_links` | Airport taxi and pre-booked transfer links |\n| `get_esim_links` | Travel eSIM store links for a destination |\n| `get_travel_vpn_links` | Travel VPN links |\n| `get_credit_card_links` | American Express links for a country, plus verified German fee figures |\n| `get_booking_links` | Several categories of one trip in a single call, filtered by `include` |\n\nEvery vertical tool also returns up to 4 matching VoyageHacks guides in the\nrequested language, so agents can cite full articles alongside the links.\n\n**Languages:** `en`, `de`, `fr`, `es`, `it`, `pl`, `cs`, `ja`, `nl`, `pt`, `zh`.\nEvery tool takes a `lang` parameter, defaulting to `en`. Each language is an\nindependently written version of the guide, not a machine translation.\n\n## Profiles\n\n| Profile | Endpoint | Tools |\n| --- | --- | --- |\n| full (default) | `https://voyagehacks.com/mcp` | 12 |\n| research | `https://voyagehacks.com/mcp?profile=research` | 10 |\n| guides | `https://voyagehacks.com/mcp?profile=guides` | 4 |\n\nThe research profile omits `get_travel_vpn_links` and `get_credit_card_links`,\nwhose links land on a subscription signup and a financial-product application.\nIt exists for app directories whose guidelines restrict linking to pages that\ninitiate a subscription or purchase.\n\nThe guides profile goes further and omits every booking tool, leaving\n`search_articles`, `get_article`, `search_travel_gear` and\n`recommend_travel_gear`. Its only outbound purchases are Amazon product pages for\nphysical travel gear, so it satisfies directories that allow commerce for physical\ngoods only. It also serves its own `initialize` instructions, which describe the\nfour tools it actually has rather than the full twelve.\n\nEach profile is addressable two ways: `/mcp?profile=guides` and `/mcp/guides` are\nthe same handler. The path form exists because the OpenAI plugin submission portal\nrejects a query string in its MCP Server URL field.\n\nAn unrecognized profile, in either form, falls back to the full tool set, so a typo\ncan never silently serve fewer tools than intended.\n\n## What it does not do\n\nThe server returns published editorial content and search links. It has no live\nfares, no live room rates, no availability check, no star ratings or review\ncounts, and it cannot make a booking or take a payment.\n\nThe travel gear catalog is VoyageHacks' own editorial selection, not a search of\nall of Amazon. It carries **no prices, ratings, review counts or stock**: the\nAmazon Product Advertising API is not enabled for this account, so any such value\nwould be invented. The tools never return those fields.\n\n## Limits\n\nAbout 90 requests per minute per IP, 256 KB per request body, 25 messages per\nJSON-RPC batch, articles truncated at 60,000 characters. Over the rate limit the\nserver returns HTTP 429 with `Retry-After`. See [SECURITY.md](SECURITY.md).\n\n## Markdown for agents\n\nThe whole site is agent-readable, not just this server:\n\n- `get_article` returns any page as Markdown.\n- Any page on voyagehacks.com returns Markdown directly when requested with an\n  `Accept: text/markdown` header (edge middleware, browsers are unaffected).\n- Discovery files:\n  [`/.well-known/mcp/server-card.json`](https://voyagehacks.com/.well-known/mcp/server-card.json),\n  [`/llms.txt`](https://voyagehacks.com/llms.txt),\n  [`/.well-known/agent-skills/index.json`](https://voyagehacks.com/.well-known/agent-skills/index.json),\n  [`/.well-known/api-catalog`](https://voyagehacks.com/.well-known/api-catalog),\n  [`/auth.md`](https://voyagehacks.com/auth.md).\n\n## Transparency\n\nVoyageHacks is an affiliate-funded publisher. Some booking and shopping links\nreturned by these tools are affiliate links (Booking.com through CJ Affiliate,\nAmazon Associates, Travelpayouts, American Express referral). VoyageHacks may\nearn a commission from qualifying bookings or purchases at no additional cost to\nthe user.\n\nEvery commercial tool states this in its `description`, and every commercial\nresponse repeats it in both its text content and `structuredContent.disclosure`,\nso an assistant can disclose it to the end user. The word \"affiliate\" is kept out\nof tool `name` and `title` values because agents route on those strings and it\nmeasurably suppresses selection; it belongs in the description and the response,\nwhich is where disclosure obligations actually attach.\n\nArticle content is free to read, with no paywall and no authentication.\n\n## Self-hosting\n\nThis is a Cloudflare Pages Function (`functions/mcp.js`). To run your own instance:\n\n1. Deploy the `functions/` directory with a Cloudflare Pages project.\n2. The server reads its content live from the site it fronts: a Hugo build that\n   emits `/<lang>/index.json` (search index) and `/<lang>/gear.json` (gear\n   catalog). Point the `SITE` constant at your deployment.\n3. Replace the affiliate constants near the top of `mcp.js` (Travelpayouts\n   marker, CJ ids, Amazon tag, Amex links) with your own program ids.\n\nThis repository mirrors the production function. The only intentional difference\nis the import on line 37: production imports `htmlToMarkdown` from the site's\n`_middleware.js`, this mirror from its own `html-to-markdown.js`. If you fork it,\nkeep the affiliate constants in sync with your own site config.\n\n## Privacy, terms and support\n\n- Privacy policy: <https://voyagehacks.com/en/privacy/>\n- Terms of use: <https://voyagehacks.com/en/terms/>\n- Security policy: [SECURITY.md](SECURITY.md)\n- Support and security reports: support@voyagehacks.com\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 8208,
  "sha": "c8599da3d30ca8ab0a14ec5143719a228d1675d766c2d87db08a96dc04299bd5",
  "repo_slug": "voyagehacks-com/mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_voyagehacks_travel_fade086c/readme"
}